Во-первых, я хочу сказать, что Я здесь на глубокой воде, поскольку я просто вношу некоторые изменения в код, который написан кем-то другим в компании, использую OleDbDataAdapter для «общения» с Excel, а я с этим не знаком. Там есть одна ошибка, за которой я просто не могу уследить.
Я пытаюсь использовать OleDbDataAdapter для чтения файла Excel, содержащего около 450 строк.
В коде это сделано так:
connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + path + "';" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"");
connection.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand.CommandText, connection);
objAdapter.Fill(objDataSet, "Excel");
foreach (DataColumn dataColumn in objTable.Columns) {
if (dataColumn.Ordinal > objDataSet.Tables[0].Columns.Count - 1) {
objDataSet.Tables[0].Columns.Add();
}
objDataSet.Tables[0].Columns[dataColumn.Ordinal].ColumnName = dataColumn.ColumnName;
objImport.Columns.Add(dataColumn.ColumnName);
}
foreach (DataRow dataRow in objDataSet.Tables[0].Rows) {
...
}
Кажется, все работает нормально, за исключением одного. Второй столбец заполнен в основном четырехзначными числами, такими как 6739, 3920 и т.д., но в пяти строках есть буквенно-цифровые значения, такие как 8201NO и 8205NO. Сообщается, что эти пять ячеек имеют пустое содержание вместо их буквенно-цифрового содержания. Я проверил в Excel, и все ячейки в этом столбце помечены как текст.
Между прочим, это файл xls, а не xlsx.
Кто-нибудь знает, почему эти ячейки отображаются пустыми в DataRow, а числовые отображаются нормально? Есть и другие столбцы с буквенно-цифровым содержанием, которые отображаются нормально.