제대로 작동하는 OLEDB (Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;
)를 사용하는 Excel 파일 읽기 코드가 있는데 특정 날짜가 DBNull로 반환되는 문제가 발생합니다.Excel 날짜 시간이 DBNull로 반환됩니다.
"02/04/2009 17:00:00" // returned as a System.DateTime
다음과 같은 스타일이 실패 : 원래 XLS 문서에서
, (EN-GB 로케일) 작업 날짜 형식은
"08/Jan/09 11:24 AM" // returned as DBNull
엑셀들이 모두있어 알고 다음 날짜가 올바르게 표시되어 날짜를 올바르게 표시 할 수는 있지만 (정확하게 스타일을 적용 할 수는 없지만) 날짜는 올바르게 표시됩니다.
방법이 있습니까? 자동 생성 된 원본을 변경하지 않고 데이터를 가져 옵니까?
참조 편집, 여기 내 데이터 읽기 방법 (A 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 문서에서 정확히 얼마나 날짜를 얻고 있습니까? 당신이하고있는 것을 볼 수 있도록 코드 스 니펫을 게시 할 수 있습니까? –