关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得

简介: 最近在用C#写一个创建Excel并将数据导出到Excel的WinForm程序,让我对OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2有了深刻的认识!参数HDR的值:HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。

最近在用C#写一个创建Excel并将数据导出到Excel的WinForm程序

让我对OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2有了深刻的认识!

参数HDR的值:

HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
参数Excel 8.0 对于Excel 97以上到2003版本都用Excel 8.0,2007或2010的都用Extended Properties=Excel 12.0
IMEX ( IMport EXport mode )设置
  IMEX 有三种模式:
  0 is Export mode
  1 is Import mode
  2 is Linked mode (full update capabilities)
  我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:
  当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
  当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
  当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
意义如下:
0 ---输出模式;
1---输入模式;
2----链接模式(完全更新能力)

按照以上描述,下面的连接字符串应该是可以读取,插件记录的:
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";Extended Properties='Excel 12.0; HDR=yes; IMEX=2'";
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = strConn;
但是事实并非如此,当执行Insert Into语句时却出现异常:“操作必须使用一个可更新的查询”!
这里需要说明一下我发生错误时的环境:Windows 7,Framework 4、0,Microsoft Office 2007,VS2010,c# WinForm;
注意是c# WinForm程序,不是Web应用程序;我刚遇到此错误的时候以为是没有权限,但使用管理员身份运行依然是相同的错误!
又通过以下代码添加权限,还是一样的错误:
FileInfo fi = new FileInfo(excelPath);
System.Security.AccessControl.FileSecurity fileSecurity = fi.GetAccessControl();
fileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
fileSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));
fi.SetAccessControl(fileSecurity);

DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(excelPath));
System.Security.AccessControl.DirectorySecurity dirSecurity = di.GetAccessControl();
dirSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
dirSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));
di.SetAccessControl(dirSecurity);
还是去搜索看看别人是怎么解决的吧,但是看遍了别人解决问题的方法,到我这里就是测试不通过!
猜测还是IMEX值的问题,改为1不行,那就改为0, 尼马,奇迹出现了!
接着又测试将IMEX设置为4或10,结果都没问题,唯独1和2不行,真是坑爹的节奏啊。
目录
相关文章
|
4月前
|
存储 定位技术 数据格式
Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容
Python中ArcPy读取Excel表格数据创建矢量要素图层并生成属性表字段与内容
|
9月前
|
存储 C语言
ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用
ArcGIS:Excel/Txt 文件生成点图层、属性表编辑的基本方法、属性表之间的连接(合并)和关联的操作、属性表的字段计算器的使用
179 0
|
6月前
|
数据挖掘 数据处理 Python
Python设置excel默认属性信息(作者、标题等)
更多内容关注我的微信公众号:python学习杂记
|
7月前
|
网络安全 数据安全/隐私保护
使用 Excel cdata addin 连接 SAP ABAP 系统时遇到错误消息 Unable to connect to SAP system
使用 Excel cdata addin 连接 SAP ABAP 系统时遇到错误消息 Unable to connect to SAP system
49 0
|
7月前
|
网络协议 Windows
使用 Excel cdata addmin 连接 SAP ABAP 系统时需要填写的参数定义解释
使用 Excel cdata addmin 连接 SAP ABAP 系统时需要填写的参数定义解释
49 0
|
12月前
|
数据库
使用 Excel cdata addin 连接 SAP ABAP 系统时遇到错误消息 Unable to connect to SAP system
使用 Excel cdata addin 连接 SAP ABAP 系统时遇到错误消息 Unable to connect to SAP system
【ArcGIS教程】ArcMap中如何导入外部Excel属性数据呢?
【ArcGIS教程】ArcMap中如何导入外部Excel属性数据呢?
【ArcGIS教程】ArcMap中如何导入外部Excel属性数据呢?
|
SQL 数据挖掘 数据库
数据挖掘系列(2)_Excel的数据挖掘插件连接SQL Server
数据挖掘系列(2)_Excel的数据挖掘插件连接SQL Server
数据挖掘系列(2)_Excel的数据挖掘插件连接SQL Server
|
数据采集 关系型数据库 MySQL
Python操作Mysql(连接、数据探查、写Excel)
Python操作Mysql(连接、数据探查、写Excel)
Python操作Mysql(连接、数据探查、写Excel)