私は、うまくいくOLEDB(Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;
)を使用するExcelファイルのコードを読んでいますが、特定の日付がDBNullとして返されるという問題が発生しています。オリジナルXLS文書でExcel DateTimeがDBNullとして返されます
、(JA-GBロケール)作業日付の書式は以下のとおりです。
"02/04/2009 17:00:00" // returned as a System.DateTime
、次のスタイルが失敗します。
"08/Jan/09 11:24 AM" // returned as DBNull
Excelは、彼らは両方だ知っています日付は正しく表示されます(ただし、正しくスタイルするよう強制することはできません)。
方法はありますか自動生成されたオリジナルを変更せずにデータを取得しますか?参照用
EDITが、ここに私のリードデータ方式である(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;
}
XLSドキュメントからどのくらい正確に日付を取得していますか?あなたが何をしているかを見ることができるようにコードスニペットを投稿できますか? –