解決C#程式碼讀取Excel檔案時出現的「外部表格式不符」錯誤
使用OleDbDataAdapter讀取Excel (xlsx)檔案時,可能會遇到「外部表格式不符」錯誤。此錯誤通常發生在xlsx檔案位於共用網路位置且未在Microsoft Excel中預先開啟的情況下。
問題:
使用以下程式碼讀取xlsx檔時,除非檔案已在Excel中打開,否則會遇到錯誤:
<code class="language-c#">string sql = "SELECT * FROM [Sheet1$]"; string excelConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathname + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\""; using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, excelConnection)) { DataSet ds = new DataSet(); adaptor.Fill(ds); }</code>
解:
為了解決此錯誤並在無需預先開啟檔案的情況下讀取Excel文件,需要更新連接字串。錯誤訊息表示“外部表格式不符”,因為連接字串使用了與Excel 2007檔案格式不相容的舊格式。
建議的解決方案是將連接字串替換為以下內容:
<code class="language-c#">string path = @"C:\src\RedirectApplication\RedirectApplication1s.xlsx"; string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";</code>
此更新後的連線字串使用Microsoft.ACE.OLEDB.12.0提供者並將Extended Properties設定為Excel 12.0。此組合與Excel 2007及更高版本的檔案格式相容,應該可以解決「外部表格式不符」錯誤。
以上是為什麼我的 C# 程式碼在讀取 Excel 檔案時出現「外部表不是預期格式」錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!