C#读取xls文件时触发“external table is not in the expected format excel”错误
解决“external table is not in the expected format” Excel连接错误
这个问题我碰到过好多次了,根源其实很简单——你用了适配*.xlsx文件的连接字符串去读取*.xls格式的文件,ACE驱动自然没法正确识别表格格式,所以抛出了这个错误。
给你两个关键的解决步骤:
修正连接字符串的格式参数
针对旧版的*.xls二进制格式文件,需要把连接字符串里的Extended Properties=Excel 12.0;替换成Extended Properties=Excel 8.0;。修改后的完整代码应该是:excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=Excel 8.0;";放心,ACE.OLEDB.12.0驱动是兼容新旧两种Excel格式的,只要这个参数设置正确就行。
额外排查点
- 先确认你的xls文件是真的旧版格式:别是把xlsx文件改了后缀名伪装成xls的,这种情况很容易踩坑。可以用Excel打开文件,看看“另存为”里显示的格式是不是“Excel 97-2003 工作簿(*.xls)”。
- 检查系统和驱动的位数匹配:如果你的应用是64位的,必须安装64位的ACE驱动;如果是32位应用,就装32位驱动,位数不匹配也会触发类似的格式错误。
内容的提问来源于stack exchange,提问作者james
相关产品推荐
相关产品推荐

