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

【C#】使用OleDb读取Excel出现“外部表不是预期的格式。” 在C#使用OleDb读取Excel表格数据时,出现外部表不是预期的格式这个提示 这个问题就很奇怪,打开表格执行程序就正常,不打开表格执行就报错,搜索了一下解决办法,总过差不多有以下几种解决办法。 代码如下: private void bind(string fileName) { string strConn = "Provider=Microsoft... 阅读详情
1、网上找了很多方法,很多都是因为读取xls和xlsx的方法连接不一样。这个我在程序已经有进行判断进行修改。

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 2007文件格式   
            ExclApp.DisplayAlerts = false;
            ExclDoc.SaveAs(savePath, format, Nothing, Nothing, Nothing, Nothing, Excel.XlSaveAsAccessMode.xlExclusive, Nothing, Nothing, Nothing, Nothing, Nothing);//保存为Excl 2007格式   
        }
        catch (Exception ex) { }
        ExclDoc.Close(Nothing, Nothing, Nothing);
        ExclApp.Quit();
}
直接把你文件的路径传入,就可以转为标准的excel文档,就可以正常的读取了。(如果你不想修改源文件,可以在传入另外一个路径,进行保存为临时文件)

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

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

C# 导入EXCEL 报错外部表不是预期的格式错误指南方案 32位应用:Microsoft Access Database Engine 2010 Redistributable (32位)64位应用:Microsoft Access Database Engine 2010 Redistributable (64位)通过以上方法,您应该能够解决大多数"外部表不是预期的格式"错误,并实现可靠的Excel导入功能。Console.WriteLine("文件无法访问: " + ex.Message);Excel文件格式不匹配(如.xls文件被当作.xlsx处理) 阅读详情

相关推荐

C# 读取Excel时报错:外部表不是预期的格式。

最近写了读取下载后的Excel数据,遇到一点小问题,查阅了一些资料,进行了一些修改,分享给大家,因为用的是自动化测试的工具写的,所以有些不是C#的代码,自己看吧://///////////////////////////////////////////////////////////////////////////////// This file was automatically generat...

so_much的专栏 1996

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

最后发现我的excel文件的格式不是标准的Excel格式,能用记事本打开并且不是乱码,所以网上通用的读取Excel文件的办法都不行,例如:OleDB,NOPI,但是文件单独另存为.xls,.xlsx文件后用这些方法可以读取。最后解决:将文件复制到一个临时文件夹,更改文件后缀名为txt,用读txt的办法去读取这个excel文件。我是txt读取到DataTable里面,这个网上就有很多办法了。按照链接里博主的代码“xml转换为excel标准格式”失败。萌新,这个问题卡了好久,记录一下。

chaos_1176的博客 2206

c#读取excel文件

完整代码在最下面,先说下写的时候遇到了好几个问题。 首先是百度c#怎么读excel,得到了这个: string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/test.xls;"+ "Extended Properties='Excel 8.0'"; DataSet ds = new DataSet(); OleDbDa...

桂小Z 2751

C# 导入EXCEL 报错外部表不是预期的格式错误

错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成。 以下是从网上摘抄原文 Excel “External table is not in the expected format.” . Question: I'm trying to read an Excel (xlsx) fi

一个程序猿的故事 5万+

江科大51单片机笔记【1】单片机及开发板介绍

单片机,Micro Controller Unit,简称MCU,内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(传感器)、处理(CPU)和硬件设备(电机、LED)的控制单片机算是一个袖珍版计算机,是一个完整的计算机系统,成本低体积小结构简单单片机的使用领域:智能仪表、实时工控、通讯设备、导航系统、家用电器等。

2301_80195807的博客 834

UE5 使用Slate制作对话窗口

使用Slate制作对话框窗口并获取对话框结果,非UMG

qq_25521145的博客 3189

【C#】C#使用OleDb读取Excel出现“外部表不是预期的格式。”

在C#使用OleDb读取Excel表格数据时,出现外部表不是预期的格式,这个问题也是偶现的 这个问题真的很奇怪,一开始也不知为什么,后面问题出现多了,总结出来,是因为在读取表格数据时需要打开Excel表格,试了很多次都是这样,没有打开表格时就出错,打开表格就正常 代码如下: /// <summary> /// 读取excel返回DataTable /// </summar...

GreAmbWang的博客 6818

实战解析:如何利用MDFEND与Weibo21数据集构建多领域假新闻检测系统

本文实战解析了如何利用MDFEND模型与Weibo21数据集构建多领域假新闻检测系统。文章深入剖析了MDFEND的领域门控与专家混合机制,并提供了从数据预处理、模型理解到训练部署的完整指南,旨在解决通用模型在不同领域新闻检测中的性能衰减问题,提升检测的准确性与适应性。

vulkan6gpu的博客 580

C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错)

C# conn.open() 外部表不是预期的格式( 读取EXCEL文件出错) 环境:win7+iis7+Office2007  在asp.net网站中导出Excel文件后,再把文件导入到数据库中。 读取Excel文件时,打开连接出错。 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常。    调试代码,创建连接对象ol

有塔耶奥多的专栏 1788

Trae IDE与Playwright MCP:5分钟实现零代码网页数据抓取

网页数据抓取是数据采集和自动化处理中的基础技术,其核心原理是通过程序模拟浏览器行为,定位并提取页面中的结构化信息。传统方式依赖编写脚本处理网络请求、解析HTML和应对反爬机制,技术门槛较高。而结合AI与自动化工具的新范式,通过自然语言交互即可完成复杂操作,极大降低了技术门槛并提升了开发效率。这种技术价值在于将开发者从繁琐的编码中解放,使其更专注于数据分析和业务逻辑。在数据监控、市场调研、竞品分析等应用场景中,快速获取网页数据是关键需求。本文以Trae IDE集成Playwright MCP为例,演示如何通过

culi3118的博客 498

【数字IC设计】Centos 7桌面版 安装Synopsys EDA Tools

简称DC,是Synopsys公司用于做电路综合的核心工具,可以将HDL描述的电路转换为基于工艺库的门级网表。

qiumingT的博客 9802

导入EXCEL 报错外部表不是预期的格式错误

错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成。 以下是从网上摘抄原文 Excel “External table is not in the expected format.” . Question: I'm trying to read an Excel (xlsx) fi

TianGaojie123abc的专栏 1775

KEPServerEX 6 之驱动协议(UDD)实战 HTTP协议对接OpenWeatherMap天气 API全流程指南

本文分享了基于 KEPServerEX 6 的通用设备驱动(UDD)对接OpenWeatherMap天气API的实战方案。该方案针对工业物联网场景进行了深度优化,具有动态城市切换、运行时热配置、老旧JS引擎兼容等核心特性。文章详细介绍了从环境准备、脚本部署到Tag配置的全流程,重点解析了Legacy JS语法适配、Float类型安全处理等关键实现细节,并提供了完整的避坑指南和故障排查方法。该方案经过生产环境验证,可稳定实现气象数据采集与动态切换功能,适用于SCADA/MES系统集成场景。

-雲飛兄-博客 714

导入EXCEL2007报错"外部表不是预期的格式错误"的解决方法

错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2007 的 不同造成。 以下是从网上摘抄原文 Excel “External table is not in the expected format.” . Question: I'm trying to read an Excel (xlsx) fi

bingtingabc的专栏 1294

潜望式长焦模组全解析:结构构造、光路设计与工程实战挑战

随着移动影像能力的不断进化,潜望式长焦模组成为旗舰手机实现 5x 甚至 10x 光学变焦的关键配置。相比传统横向堆叠镜组,潜望式结构通过反射棱镜实现纵向空间上的光路折叠,有效解决了模组厚度与变焦行程的矛盾问题。然而,高倍变焦模组不仅面临复杂的光学路径设计,还涉及反射损耗控制、防抖马达配合、模组热应力管控与 ISP 畸变校正等一系列工程难点。本文将结合主流机型的实战经验,深入解析潜望式长焦模组的结构构造与调试路径,为影像系统工程师提供完整的实战参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3139

特殊通信领域场景应用:基于Simulink的数字预失真(DPD)算法仿真建模示例

增益压缩:高功率输入时输出信号的增益下降。相位失真:输入信号的相位随功率变化而改变。带外干扰:非线性失真会引入额外的频谱分量,影响邻道信号。多项式模型:用多项式拟合功率放大器的非线性特性。查找表(LUT):通过离线训练生成预失真映射表。自适应算法:实时调整预失真参数以动态补偿失真。发送端:生成随机比特流并调制为射频信号。预失真模块:对输入信号进行预失真处理。功率放大器模块:模拟非线性失真。接收端:解调信号并评估误码率(BER)。

xiaoheshang_123的博客 273

对于连接Excel时“外部表不是预期的格式”错误的处理

对于由File.Create(fileName)创建的Excel文件,虽然格式是Excel文件,但是并不是标准的Excel文件,用Ado.net对这种文件连接操作时,会提示“外部表不是预期的格式”错误。这种文件用文本打开时和txt的格式是一样的。 对于提示“外部表不是预期的格式”错误的Excel文件的处理解决办法,用文件读取方式读入DataTable,再做处理 //读文件并存在内

ytc的专栏 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C#读取excel出错提示外部表不是预期的格式

很多人换了2007/2010后,问的最多的问题之一是2003里最经典的ADO中的“provider=Microsoft.Jet.OLEDB.4.0”这句怎么不能用了。 百度一下可以了解到,Microsoft.Jet.OLEDB.4.0是MicrosoftJet引擎,这适用于2003版本(2003之前的我没装,所以也不知道能向下适应到哪个版本),而在2007中,微软对其旗下 Access与 Exc

guobing965816的专栏 2869

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# conn.open() 外部表不是预期的格式

环境:win7+iis7+Office2007  在asp.net网站中导出Excel文件后,再把文件导入到数据库中。 读取Excel文件时,打开连接出错。 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常。    调试代码,创建连接对象oleDbConnection也正常,但在conn.Open()打开链接时出错。  仔细

firefly_2002的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在读取Excel时,出现外部表不是预期的格式

在读取Excel时,出现外部表不是预期的格式 自己的电脑修改后完全可以运行,生成的.exe文件到别的电脑就不可以;按照网上各种进行修改,结果总是有问题; 放弃,改用NPIO打开excel表格,生成dataTable文件,再进行筛选处理。 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成。 以下是从网上摘抄原文 Exce

有塔耶奥多的专栏 2万+

C#导入excel文件,捕捉到的异常为“外部表不是预期的格式。”

**问题:**由于多个excel表中,所用数据的单元格中英状态下混用,导致某些应有的结果得不到。故此,我全部替换excel中的括号使其统一,在保存时,提示“某些单元格具有交迭的条件格式区域。早期版本的excel将无法评估交迭单元格上的。。。”内容,如图所示。然鹅,我并没考虑这么多,生硬保存。再次导入,出现异常。 原因: 在早期版本的 Excel 中,并非所有新功能都受支持。当你在兼容性模式下工作或希望将工作簿保存为 Excel 97-2003 (.xls) 文件格式时,兼容性检查器可帮助你识别可能会在早期

qq_40467670的博客 2725

C# 导入EXCEL 报错:外部表不是预期的格式

错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成。 以下是从网上摘抄原文 Excel “External table is not in the expected format.” . Question: I'm trying to read an Excel (xlsx)

bear_79的专栏 2413

c# 外部表不是预期的格式 解决方案 office

抓取网站的数据 导出到excel中,刚开始还是运行的还顺畅的,但是由于数据过多,开始出现这个错误---“外部表不是预期的格式” 百度了下,发现这个是Excel版本问题,我的运行环境是:win7+Office2007 [csharp] view plaincopy using System.Data.OleDb;   using Syste

onlyzkg的专栏 5928
上一篇: C#中数组、ArrayList和List三者的区别
下一篇: RTF小知识
question00
博客等级 码龄16年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值