[英]Reading Excel file with OleDB return wrong values
我正在嘗試讀取一個 Excel 文件,該文件在一列中包含以下類型的值。
當我在公式欄中查看這些列時,它是一個日期時間。 有些像下面 -
我正在嘗試使用以下代碼閱讀這些專欄。
var sqlBuilder = new OleDbConnectionStringBuilder
{
DataSource = FileName,
Provider = "Microsoft.ACE.OLEDB.12.0"
};
sqlBuilder.Add("Extended Properties", "Excel 12.0;characterset=65001;HDR=No;IMEX=1;FMT=Delimited;");
cn = new OleDbConnection(sqlBuilder.ConnectionString);
cn.Open();
但是,問題在於這些值的讀取方式並不完全相同。 他們讀起來像-
出現一些隨機數值而不是 00。嘗試使用 Imex=0 或 HDR=Yes,但沒有幫助。
這是因為 OleDB ODBC 驅動程序在猜測列數據格式方面是出了名的糟糕。 最好告訴它如何讀取列數據類型。 我更喜歡將所有列值作為字符串讀取並在我的代碼中進行轉換。
在您的連接字符串構建器中使用它:
sqlBuilder.Add("Extended Properties", "Excel 12.0 Xml;characterset=65001;HDR=YES;IMEX=1;");
見https://www.connectionstrings.com/ace-oledb-12-0/treating-data-as-text/
您可能還獲得了絕對值,而不是您在 Excel 中看到的格式化值,在這種情況下,您的代碼運行良好,您必須弄清楚如何處理這些差異。
如果使用 OleDB 方法都失敗了,請切換到使用EPPlus ,我在准確讀取 XLSX 文件方面取得了更好的成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.