Я использую OleDB DataReader для получения данных из моих файлов Excel (но эта проблема возникает и в DataTable.Fill). Дело в том, что у меня есть столбец, который должен возвращать строки. Все хорошо и работает, но недавно возникла проблема, потому что ячейки столбца имели разные форматы. Некоторые были в цифрах, а другие в тексте. Когда я проверил, используя dataReader.GetSchema (), он показал, что рассматриваемый столбец был выведен как тип System.String. Проблема с этим заключалась в том, что все нетекстовые ячейки были немедленно установлены в нуль.
Есть ли способ предложить читателю, чтобы этот столбец просто анализировал столбцы как System.Object, вместо того, чтобы выводить его как System.String и выводить все не строковые ячейки?
Используемая строка подключения:
string connString = "Provider = Microsoft.Jet.OLEDB.4.0;" +
"Источник данных =" + filePath + ";" +
«Расширенные свойства = Excel 8.0;»;
и код:
using ( OleDbConnection connection = new OleDbConnection( connString ) )
{
connection.Open();
foreach ( string worksheetName in worksheetNames )
{
using ( OleDbCommand command =
new OleDbCommand( "SELECT * FROM [" + worksheetName + "]", connection ) )
{
TEntity entity;
using ( OleDbDataReader dataReader = command.ExecuteReader() )
{
while ( dataReader.Read() )
{
entity = GetDataFromDataTable( dataReader );
if ( entity != null )
{
entityList.Add( entity );
}
}
}
}
}
connection.Close();
}