簡體   English   中英

使用 OleDB 讀取 Excel 文件返回錯誤值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM