我正在使用OleDB DataReader從我的excel文件中獲取數據(但在DataTable.Fill中也出現此問題)。問題是我有一個應該返回字符串的列。一切都很好,但最近,一個問題出現了,因爲該列的單元格具有不同的格式。有些是在數字和其他文字。當我使用dataReader.GetSchema()進行檢查時,它顯示有問題的列被推斷爲類型System.String。與此問題是,所有非文本單元立即設置爲空。Excel單元格格式問題
有沒有一種方法可以向讀者建議該列應該將列解析爲System.Object,而不是將其推斷爲System.String並轉儲所有非字符串單元格?
我使用的連接字符串是:
串CONNSTRING = 「提供商= Microsoft.Jet.OLEDB.4.0;」 + 「Data Source =」+ 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();
}
謝謝。 IMEX工作。 – Jonn 2010-06-21 22:34:29
僅供參考:使用Microsoft.Jet.OLEDB.4.0提供程序時將忽略MaxScanRows = 0;它仍然只掃描前8行。 Microsoft.ACE.OLEDB.12.0提供程序似乎不會遇到同樣的問題。請參閱[KB](http://support.microsoft.com/default.aspx?scid=kb;en-us;257819)中_Rows到Scan_的部分 – codechurn 2012-02-09 01:37:42