OLEDB ( ) を使用する Excel ファイル読み取りコードはProvider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;
正常に動作しますが、特定の日付が DBNull として返されるという問題が引き続き発生します。
元の XLS ドキュメントでは、機能する日付の形式 (en-GB ロケール) は次のとおりです。
"02/04/2009 17:00:00" // returned as a System.DateTime
そして、次のスタイルは失敗します:
"08/Jan/09 11:24 AM" // returned as DBNull
次の例では日付が正しく表示されているため、Excel は両方の日付を認識しています (ただし、強制的にスタイルを正しく設定することはできません)。
=DATE(YEAR(c),MONTH(c),DAY(c)) // where c = cell reference.
自動生成されたオリジナルを変更せずにデータを取得する方法はありますか?
参考までに編集してください。ここに私のデータ読み取りメソッドがあります(dbAdapterがすでに設定されていると仮定します-DBNullは、まったく起動されないキャッチからのものではないことに注意してください):
public List<List<string>> GetData(string tableName, int maxColumns)
{
List<List<string>> rows = new List<List<string>>();
DataSet ExcelDataSet = new DataSet();
dbCommand.CommandText = @"SELECT * FROM [" + tableName + "]";
dbAdapter.Fill(ExcelDataSet);
DataTable table = ExcelDataSet.Tables[0];
foreach (DataRow row in table.Rows)
{
List<string> data = new List<string>();
for (int column = 0; column < maxColumns; column++)
{
try
{
data.Add(row[column].ToString());
}
catch (Exception)
{
data.Add(null);
}
}
// Stop processing at first blank row
if ( string.IsNullOrEmpty(data[0]) ) break;
rows.Add(data);
}
return rows;
}