700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C#读取excel文件 报“外部表不是预期的格式”的解决办法

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

时间:2023-09-14 02:28:51

相关推荐

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

1、网上找了很多方法,很多都是因为读取xls和xlsx的方法连接不一样。这个我在程序已经有进行判断进行修改。(解决连接1:/kingkongv/archive//08/26/2657436.html) (解决连接2:/jiajiayouba/article/details/7531707)

2、上面解决连接2,有一段文字引起了我的注意,就是: 用记事本打开你的excel文件,看看显示是否为乱码。 若是乱码,我这边测试是不会提示这个错误的,可以成功导入。 若是html代码,则表示你的excel文件格式不是标准的excel格式,才会提示“外部表不是预期的格式”的错误; 然后我用记事本打开我的excel文件,发现是xml代码,说明我的文档不是标准的格式,不能用内置的open方法打开。

3、看到另外一个blog(连接),里面说,是把文件转换为标准的格式,然后再读取那个临时文件。(文章里面的excelhelper没有找到对应的方法)

4、于是,我在google搜索了一下关于“xml转换为excel标准格式”,终于让我找到一个方法(连接):

public static void ConvertExcel(string savePath){//将xml文件转换为标准的Excel格式 Object Nothing = Missing.Value;//由于yongCOM组件很多值需要用Missing.Value代替 Excel.Application ExclApp = new Excel.ApplicationClass();// 初始化Excel.Workbook ExclDoc = ExclApp.Workbooks.Open(savePath, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);//打开Excl工作薄 try{Object format = Excel.XlFileFormat.xlWorkbookNormal;//获取Excl 文件格式 ExclApp.DisplayAlerts = false;ExclDoc.SaveAs(savePath, format, Nothing, Nothing, Nothing, Nothing, Excel.XlSaveAsAccessMode.xlExclusive, Nothing, Nothing, Nothing, Nothing, Nothing);//保存为Excl 格式 }catch (Exception ex) { }ExclDoc.Close(Nothing, Nothing, Nothing);ExclApp.Quit();}

直接把你文件的路径传入,就可以转为标准的excel文档,就可以正常的读取了。(如果你不想修改源文件,可以在传入另外一个路径,进行保存为临时文件)

更新(-10-23): 1、如果用excel软件保存格式为:XML 电子表格 (*.xml),是用xml保存,可以用文本编辑器打开。(注意:部分用这个格式导出之后,把后缀名修改为xls,excel软件打开此文件的时候,出现“文件名和扩展名不匹配”的提示) 2、如果用excel软件保存的xls格式/xlsx格式,是用zip(应该是)压缩包的形式进行保存,用文本编辑器打开是乱码

更新(-10-24): 有两种原因会导致报错“外部表不是预期的格式”: 1、用Microsoft.Jet.OleDb.4.0去解析xlsx的文件 2、格式为xls的文件其实是XML 电子表格 (*.xml),不是标准的xls文件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。