MVC 4 OleDbConnection Issue

У меня проблема с данными, возвращаемыми из электронной таблицы Excel. Я могу прочитать все данные за исключением первого столбца, по какой-то причине, по которой я сбит с толку, tbl.Rows[r][0] на самом деле второй столбец и tbl.Rows[r][1] это третий столбец и так далее.

Я просмотрел электронную таблицу, к которой прикреплен следующий код, он не поврежден, это просто обычная электронная таблица Excel 97-2003, и я могу подтвердить, что первый столбец (A) никоим образом не скрыт.

var tbl = new DataTable();

using (var conn = new OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;data source=" + file + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;\""))
{
    conn.Open();
    using (var adp = new OleDbDataAdapter("SELECT * FROM [Sheet2$]", conn))
    {
        adp.Fill(tbl);
    }
    conn.Close();
}

AddData(tbl);

public void AddData(DataTable tbl)
{
    Type typeString = Type.GetType("System.String");
    Type typeDateTime = Type.GetType("System.DateTime");
    Type typeBoolean = Type.GetType("System.Boolean");
    Type typeInt32 = Type.GetType("System.Int32");

    var tblData = new DataTable();
    tblData.Columns.Add(new DataColumn("ID", typeString));
    tblData.Columns.Add(new DataColumn("Created", typeDateTime));
    tblData.Columns.Add(new DataColumn("CreatedBy", typeString));
    tblData.Columns.Add(new DataColumn("Type", typeInt32));
    tblData.Columns.Add(new DataColumn("Public", typeBoolean));
    tblData.Columns.Add(new DataColumn("Note", typeString));

    for (int r = 0; r <= tbl.Rows.Count; r++)
    {
        DataRow row = tblData.NewRow();

        row["ID"] = tbl.Rows[r][1].ToString();

        DateTime createDate;
        DateTime.TryParse(tbl.Rows[r][2].ToString(), out createDate);

        row["Created"] = createDate.ToString("yyyy/MM/dd HH:mm:ss");

        row["CreatedBy"] = "Bob";

        row["Type"] = 7;

        row["Public"] = false;

        var sbNote = new StringBuilder();
        sbNote.Append("<ul>");
        sbNote.Append("<li>Criteria - " + tbl.Rows[r][4] + "</li>");
        sbNote.Append("<li>Status - " + tbl.Rows[r][6] + " (" + tbl.Rows[r][3] + ")</li>");
        sbNote.Append("<li>Number - " + tbl.Rows[r][0] + "</li>");
        sbNote.Append("<li>ID - " + tbl.Rows[r][1] + "</li>");
        sbNote.Append("</ul>");

        row["Note"] = sbNote.ToString();

        tblData.Rows.Add(row);
    }

    tblData.Dispose();
}

Я не получаю ошибок, код, просто данные из первого столбца не возвращаются, поэтому не читаются.

Любая помощь приветствуется:-)

0 ответов

Другие вопросы по тегам