解决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中文网其他相关文章!