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();
}
Я не получаю ошибок, код, просто данные из первого столбца не возвращаются, поэтому не читаются.
Любая помощь приветствуется:-)