使用OLEDB读取EXCEL数据时,为何读取不到单元格中的时间值,全是1900\1\0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用OLEDB读取EXCEL数据时,为何读取不到单元格中的时间值,全是1900\1\0相关的知识,希望对你有一定的参考价值。

使用OLEDB读取EXCEL数据时,为何读取不到单元格中的时间值,全是1900\1\0,
以下是读取部分的代码:
string strCon = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source = D:\\sampl.xls;Extended Properties =\"Excel 8.0;HDR=No;IMEX=2\"";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = "SELECT *FROM [Sheet1$]";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
DataTable myDataTable = new DataTable();
myCommand.Fill(myDataSet);

string s = myDataTable.Row[3][3].toString()
s接到的是1900\1\0,但是实际格式是这样的“0:14:34”

参考技术A string s = myDataTable.Row[3][3].toString()
要先弄清楚你要的内容是不是在这个格子内,OleDb度Excel的时候,默认情况下是吧第一行当做列名,不计算在内的。接到1900\1\0值应该是读到空格子了
参考技术B 不会吧,应该可以的,

用OLEDB读取EXCEL时,单元格内容长度超过255被截断

https://support.microsoft.com/zh-cn/help/189897/data-truncated-to-255-characters-with-excel-odbc-driver Microsoft.ACE.OLEDB.12.0 驱动读取excel,会读取前8行来判定每列的数据类型,假如没有超过255个字符,那么会被设置为nvarchar(255),从第9行开始,超过255字符会被自动截断! 推荐使用第三方库:https://github.com/ExcelDataReader/ExcelDataReader ---------------------------------- 附连接字符串 Microsoft ACE OLEDB 12.0 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx; Extended Properties="Excel 12.0 Xml;HDR=YES"; 驱动下载Microsoft Access Database Engine 2016 Redistributable https://www.microsoft.com/en-us/download/details.aspx?id=54920

以上是关于使用OLEDB读取EXCEL数据时,为何读取不到单元格中的时间值,全是1900\1\0的主要内容,如果未能解决你的问题,请参考以下文章

C# OLEDB读取EXCEL的数据为空值

如何在使用 Oledb 的其他用户使用时读取 excel?

通过 OLEDB 读取 Excel 将字符串读取为 DBNull

使用 OLEDB 从 Excel 中读取数据

使用 OLEDB 数据提供程序读取 excel 文件

用OLEDB读取EXCEL时,单元格内容长度超过255被截断