C#读取excel文件,报“外部表不是预期的格式”的解决办法

在Windows系统中,使用C#读取Excel文件时遇到'外部表不是预期的格式'错误。该问题可能由于文件格式、连接字符串版本不匹配导致。检查确认文件是否为标准.xls格式,并调整连接字符串为Excel2007版本,如HDR=Yes用于标识首行为标题行,IMEX设置可影响读写模式。

有一位同事在做了一个工具,基于asp.net框架,然后在选择文件并打开,读取Excel的文件时报了错,错误提示如下:

然后同事跟我说在WIN7,Win8的系统上是是没有问题的,只存在赢系统上,一开始我以为是系统不兼容。后来在我的电脑上运行了一下(WIN7),也是提示“外部表不是预期的格式”这个错误。

然后我就在网上找了一些资料,出现这种错误的大多数都是属于这两种情况:

如图1所示,该文件的后缀名是.xls的,但实际上是XML电子表格2003(* XML),并不是标准的.xls的文件。根据网上的方法检测该文件是否为标准的.xls的文件,(用记事本打开的excel文件,如果不是乱码,则该文件是XML代码,如果打开的是乱码,则该文件是是的excel文件),检查后发现那个文件是标准的的excel文件,就先排除了这种可能性。

2,用Microsoft.Jet.OleDb.4.0去解析XLSX的文件,但我打开的文件并不是.XLSX,而是.xls的文件

最后仔细看了一下链接的字符串,发现应该是excel版本的问题,excel连接字符串版本是office2003的,更改为Excel2007版本就可以正常打开文件进行读取数

据了改动的具体代码如下:

using System.Data.OleDb;
using System.Data;

public void ReadExcelFiless()
{
    //string OpenExcelData = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tB_excel.Text + ";Extended Properties = 'Excel 8.0;HDR=Yes;IMEX=1;'"; 

    //此连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值