日期格式爲1:55:25 AM在excel文件中,使用ExcelReaderFactory.CreateBinaryReader讀取後,得到0.0451388888888889。在asp.NET導入Excel文件時丟失的日期格式C#
1
A
回答
1
內部Excel以該十進制格式存儲數據並將邏輯應用於該值以顯示日期。不幸的是,從該格式到日期格式的轉換並不總是直截了當的。
我建議打開Excel文件,使用OleDb將其讀入數據集。這樣做會以電子表格中看到的格式保留數據。
有許多關於如何使用OleDb讀取Excel的精彩文章。
你可以用這一個開始: http://codehill.com/2009/01/reading-excel-2003-and-2007-files-using-oledb/
乾杯!
1
使用的OleDb來讀取數據,就像這樣:
string dsn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ xlsPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";"
OleDbConnection newConn = new OleDbConnection(dsn);
string tableName= "MyGlobalNamedRange";
string sqlText = String.Format("SELECT * FROM [{0}]", tableName);
IDbCommand cmd = connection.CreateCommand();
cmd.CommandText = sqlText;
IDataReader res = cmd.ExecuteReader();
有關使用的DataReader信息,請參閱KB article
1
當Excel識別值作爲一個時間值,它存儲時間部分在數字的小數部分,並將日期的日期部分存儲爲數字的整數部分。 Excel將所有數值存儲爲雙精度浮點值,這就是爲什麼您得到非精確結果的原因。但是,爲什麼你得到0.0451388888888889而不是像0.080150462962963這樣的東西是一個謎。您可以嘗試在一個空白單元格中指定一個神祕日期值(例如=A3
),在Excel中查找基礎值。然後將該單元格格式化爲帶有小數位的數值,並查看它提供的數字。如果基礎值也是0.04513 ...那麼問題出在源數據而不是ExcelDataReader庫。
相關問題
- 1. 日期格式丟失
- 2. 將MS Excel文件鏈接到MS Access時丟失了數字/日期格式
- 3. SAS導入excel日期格式更改
- 4. 導入CSV文件導入cockroachdb,錯誤日期時間格式
- 5. C#:在RichTextBox插入文本導致格式丟失
- 6. Excel文件導入日期爲指數(例如1.74E + 09)值日期格式?
- 7. 日期格式 - Excel和C#
- 8. 配置SQL導入Excel文件與具體的日期時間格式
- 9. excel 2016文本導入嚮導丟失文件來源選項
- 10. 臨時ASP.NET文件丟失
- 11. Excel條件格式日期
- 12. 將日期轉換爲文本而不會丟失Excel中的格式?
- 13. 導出文件的Excel日期格式問題
- 14. C#日期時間到SQL日期時間丟失精度
- 15. 導入帶有阿拉伯文格式的Excel日期時間列
- 16. 格式化日期表導入到MySQL時的日期列
- 17. Excel日期格式
- 18. 轉換/格式丟失日期到完成日期
- 19. 日期格式在實際的文件(CSV)和Excel文件
- 20. 格式化日期(YY:MM:DD:時間)在Excel
- 21. Excel宏日期格式在文件打開時變化
- 22. 導入Excel文件,asp.net
- 23. 導入Excel文件到ASP.NET
- 24. 在sql developer中導入表格時的日期格式
- 25. NotesDocument.save()導致富文本格式丟失
- 26. excel c格式導入的文本格式#
- 27. 日期時間格式C#
- 28. C#日期時間格式
- 29. c#日期/時間格式
- 30. C#日期/時間格式