有一位同事在做了一个工具,基于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;'";
//此连接

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

被折叠的 条评论
为什么被折叠?



