You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中无法将XLSX文件读取到DataTable的问题求助

解决OleDb无法打开XLSX文件的问题

嘿,我来帮你搞定这个头疼的问题!你遇到的External table is not in the expected format报错,根源其实很简单——XLS和XLSX用的OleDb驱动根本不是一回事:旧版XLS是二进制格式,用Microsoft.Jet.OLEDB.4.0驱动没问题,但XLSX是基于OpenXML的新格式,Jet驱动完全不支持它,得换用ACE驱动才行。

下面给你具体的解决方案:

1. 替换驱动与连接字符串

针对XLSX文件,你需要改用Microsoft.ACE.OLEDB.12.0(或更高版本)驱动,同时调整连接字符串的扩展属性部分。直接用这段代码试试:

// 适配XLSX的连接代码
System.Data.OleDb.OleDbConnection theConnection = new System.Data.OleDb.OleDbConnection(
    "provider=Microsoft.ACE.OLEDB.12.0;data source=C:\\Users\\us269229\\Desktop\\workbook.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=NO;IMEX=1;\""
);
theConnection.Open();

2. 几个关键注意事项

  • 先确认你的电脑上安装了Microsoft Access Database Engine(也就是ACE驱动),如果没装的话得去下载安装——注意要选和你程序运行位数一致的版本(32位/64位),不然会出现兼容性问题。
  • 连接字符串里的Excel 12.0 Xml是专门针对XLSX格式的,千万别写错成旧版的Excel 8.0了。
  • 如果你的程序是64位的,就别装32位的ACE驱动,反之亦然,不然大概率会报错。

为啥原来的代码行不通?

External table is not in the expected format

这个错误的本质是:Microsoft.Jet.OLEDB.4.0驱动只能处理Excel 97-2003的XLS二进制格式,对2007年之后推出的XLSX开放XML格式完全不兼容,所以必须切换到支持新格式的ACE驱动才能正常读取文件。

内容的提问来源于stack exchange,提问作者Naomi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:59:50