c# System.Data.OleDb.OleDbException (0x80004005): Cannot expand named range
来源:互联网 发布:windows 7 loader 3.1 编辑:程序博客网 时间:2024/06/17 17:05
使用OleDb读写Excel时,遇到如下异常信息:
System.Data.OleDb.OleDbException (0x80004005): Cannot expand named range
代码:
var connStr = string.Format("provider = microsoft.ace.oledb.12.0;data source={0};Extended Properties='Excel 12.0;HDR=No;IMEX=1'", path);var conn = new OleDbConnection(connStr);var createSql = "CREATE TABLE [TableName] ([Title],[Content])";using (OleDbCommand com = new OleDbCommand(createSql, conn)){ com.ExecuteNonQuery();}var insertSql = "INSERT INTO [TableName] ([Title],[Content]) VALUES ('title','content')";using (OleDbCommand com = new OleDbCommand(insertSql, conn)){ com.ExecuteNonQuery();}
如果你对同一个sheet进行了一次Insert操作,这样使用完全没有问题,但是当你第二次调用Insert时,恭喜你,报错了!Cannot expand named range!
出错的原因在于你的insert语句,
var insertSql = "INSERT INTO [TableName] ([Title],[Content]) VALUES ('title','content')";
这个语句怎么了?第一次插入的时候不是好好的! 经过漫长的查询和调试后发现,insert语句你要这么写:
var insertSql = "INSERT INTO [TableName$] ([Title],[Content]) VALUES ('title','content')";
看到区别了吗?区别就在于 “$”,就这一刀啊,折磨了我多少个日日夜夜! 还有一点需要注意:Create的时候是千万不能加这个“$"的!
搞清这个问题后,不禁对微软兄表示不满:这一刀到底是加还是不加啊,Insert时要加的话,我第一次Insert为啥又不需要加呢?
- c# System.Data.OleDb.OleDbException (0x80004005): Cannot expand named range
- System.Data.OleDb.OleDbException错误
- C# 解决{System.Data.OleDb.OleDbException (0x80004005): 提示由于将在索引,主关键字或关系中创建重复的值,请求对表的改变没有成功
- System.Data.OleDb.OleDbException: 内存溢出
- C# OleDbConnection操作access出现System.Data.OleDb.OleDbException其他信息: 未指定的错误
- System.Data.OleDb.OleDbException: Operation must use an updateable query
- System.Data.OleDb.OleDbException: 操作必须使用一个
- “System.Data.OleDb.OleDbException: 未指定的错误”
- 关于system.data.oledb.oledbexception 未定义的错误
- 在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
- 可能你没有注意的System.Data.OleDb.OleDbException.Errors属性
- 关于操作Access数据报System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误异常问题
- "System.Data.OleDb.OleDbException: 无法从指定的数据表中删除"的解决办法
- System.Data.OleDb.OleDbException: 发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。
- 使用Excel时出现System.Data.OleDb.OleDbException: 找不到可安装的 ISAM错误。
- 异常详细信息: System.Data.OleDb.OleDbException: 未指定的错误 (asp.net C#)
- System.Data.OleDb.OleDbException: 至少一个参数没有被指定值 解决方法
- ACCESS的System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误
- 如何获得eclipse的版本号
- ARM-Linux的启动的信息显示到framebuffer
- 锁定内存
- 如何给jar包attach source包
- Idea 快捷键整理
- c# System.Data.OleDb.OleDbException (0x80004005): Cannot expand named range
- JS命名规范、引用规范
- 定时执行函数
- 更改printk打印级别
- struts2 <s:textfield />中的日期格式化输出
- Linux system函数返回值
- PHP源码分析之HashTable
- 取消将要执行的延迟函数吗?(使用了performSelector)
- 代理模式(Proxy Pattern)(一):代理模式介绍