【C#】使用OleDb读取Excel出现“外部表不是预期的格式。”
在C#使用OleDb读取Excel表格数据时,出现外部表不是预期的格式这个提示
这个问题就很奇怪,打开表格执行程序就正常,不打开表格执行就报错,搜索了一下解决办法,总过差不多有以下几种解决办法。
代码如下:
private void bind(string fileName) {string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=" + fileName + ";" +"Extended Properties='Excel 8.0; HDR=Yes; IMEX=1'";OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [sheet1$]", strConn);DataSet ds = new DataSet();try{da.Fill(ds);dt = ds.Tables[0];this.dataGridView1.DataSource = dt;}catch (Exception err){MessageBox.Show("操作失败!" + err.ToString());}}
参数解释:
HDR=Yes/No
可选参数,指定 Excel 表的第一行是否列名,缺省为 Yes,可以在注册表中修改缺省的行为。
“HDR =Yes;” 表示第一行包含列名,而不是数据。“HDR =No;” 表明相反;
IMEX=1
可选参数,将 Excel 表中混合 Intermixed 数据类型的列强制解析为文本。
当IMEX = 0时为“汇出模式”,这个模式开启的Excel档案只能用来做“写入”用途。
当IMEX = 1时为“汇入模式”,这个模式开启的Excel档案只能用来做“读取”用途。
当IMEX = 2时为“连结模式”,这个模式开启的Excel档案可同时支援“读取”与“写入”用途。
解决办法:
- 不是标准的excel表。该文件的后缀名是.xls的,但实际上是XML电子表格2003(* XML),并不是标准的.xls的文件。根据网上的方法检测该文件是否为标准的.xls的文件,用记事本打开的excel文件,如果不是乱码,则该文件是XML代码,如果打开的是乱码,则该文件是excel文件。
- 如果表格打开时可以正常执行,打不开执行程序时报错,可以先判断文件是否打开,如果文件没有打开,则自动打开。这个判断比较笨,但是也算是个无奈之举,判断文件是否打开方法:链接: https://blog.csdn.net/weixin_38211198/article/details/90600126.
- 用网上的一个ExcelHelper类包.通过试验发现一个解决办法,ExcelHelper提供了通过模板来创建新excel文件的功能,我们给它设置一个格式正确的xxx.xls文件,再指定保存路径,导出数据为xls文件即可。
- 是EXCEL格式的问题,应该定位一下问题出在哪,看一下具体错误信息或出错现场信息。或者不使用OLE导入,直接以读取EXCEL单元格的形式导入。以单元格形式导入,虽然效率差一些,但可以非常有效地避免空行、空列、列内容类型多内容读不进去(列内容有纯数字或纯字母内容时)的问题。
- 用Microsoft.Jet.OleDb.4.0去解析XLSX的文件,但我打开的文件并不是.XLSX,而是.xls的文件最后仔细看了一下链接的字符串,发现应该是excel版本的问题,excel连接字符串版本是office2003的,更改为Excel2007版本就可以正常打开文件进行读取数。
//这两种连接是不一样的
string OpenExcelData = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tB_excel.Text + ";Extended Properties = 'Excel 8.0;HDR=Yes;IMEX=1;'"; //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
string OpenExcelData = "Provider=Microsoft.ACE.OLEDB.12.0;" + "data source=" + Path + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
【C#】使用OleDb读取Excel出现“外部表不是预期的格式。”相关推荐
- 【C#】C#使用OleDb读取Excel出现“外部表不是预期的格式。”
在C#使用OleDb读取Excel表格数据时,出现外部表不是预期的格式,这个问题也是偶现的 这个问题真的很奇怪,一开始也不知为什么,后面问题出现多了,总结出来,是因为在读取表格数据时需要打开Excel ...
- 对于连接Excel时“外部表不是预期的格式”错误的处理
对于由File.Create(fileName)创建的Excel文件,虽然格式是Excel文件,但是并不是标准的Excel文件,用Ado.net对这种文件连接操作时,会提示"外部表不是预期的 ...
- C#读取excel文件,报“外部表不是预期的格式”的解决办法
1.网上找了很多方法,很多都是因为读取xls和xlsx的方法连接不一样.这个我在程序已经有进行判断进行修改. (解决连接1:http://www.cnblogs.com/kingkongv/archi ...
- Asp.Net读取excel文件的时候 出错提示:外部表不是预期的格式 解决方案
解决方法: 用记事本打开你的excel文件,看看显示是否为乱码. 若是html代码,则表示你的excel文件格式不是标准的excel格式,才会提示"外部表不是预期的格式&qu ...
- 在读取Excel时,出现外部表不是预期的格式
错误原因1: 由于Excel 97-2003的连接格式与Excel 2010 的 不同造成. 以下是从网上摘抄原文 Excel "External table is not in the e ...
- C# 导入EXCEL 报错外部表不是预期的格式错误
错误经过:在读取Excel时,出现外部表不是预期的格式 错误原因1: 由于 Excel 97-2003的连接格式与 Excel 2010 的 不同造成. 以下是从网上摘抄原文 Excel " ...
- mysql外部表不是预期格式_批量Excel数据导入Oracle数据库 导入excel错误:外部表不是预期的格式 解决方案...
在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一下,导出的Excel是标准文件不是html,没错 ...
- 导入EXCEL报错:外部表不是预期的格式错误、文件格式和扩展名不匹配,文件可能已损坏或不安全的解决方法
开发环境:C# + EXCEL2003 + VS2008 问题: 当使用如下代码从gridview导出数据到excel后,无法从excel取出数据,具体如下: 1.原使用的代码: protected ...
- 解决Excel导入报错:外部表不是预期的格式
最近在做一个Excel数据导入到数据库的功能,读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决方法:检查了一下,导出的Excel是标准文件不是html,没错,Excel文件正常 ...
最新文章
- 第 7 章 项目运作
- 认真推荐8个功能强大的实用网站,备受好评!
- 【swjtu】数字电路实验5_按键防抖动
- 菜鸟学习计划浅谈之Linux系统
- SAP CRM text Transfer mode
- 什么是JAX-RS注释? (第2部分)
- 数据库中主键的选择和使用
- oracle copy database,oracle 11g duplicate from active database 复制数据库(二)
- 不为失败找理由,只为成功找方法
- 学计算机应用技术应具备什么素养,2018年云南经济管理学院单招计算机应用技术职业适应性测试大纲...
- matlab故障识别,基于Matlab的电力系统故障分析与仿真(V2.1)最新版
- stm32入门(从51过渡到32)
- 拓端tecdat|R语言如何在生存分析与Cox回归中计算IDI,NRI指标
- php 分页类 bootstrap,Thinkphp自带分页类样式转Bootstrap分页样式
- qchart 怎么点击一下 出一条线_动漫日系雨伞怎么画?教你用集中线尺画一把日本雨伞!...
- Excel 中固定行标题和列标题
- rust怎么拆除墙壁指令_腐蚀RUST指令大全
- 人工神经网络与深度神经网络
- Linux——读写锁
- 基于RealSense的坐姿检测技术