.NET把excel数据导入到sql数据库报错:无法打开excel(本地没问题,IIS发布到网站报错),求解!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET把excel数据导入到sql数据库报错:无法打开excel(本地没问题,IIS发布到网站报错),求解!相关的知识,希望对你有一定的参考价值。

报错详细信息:The Microsoft Access database engine cannot open or write to the file
''. It is already opened exclusively by another user, or you need
permission to view and write its data.

自己写的程序去打开xls文件。很可能程序先打开xls文件,然后程序退出时没有关闭xls文件。然后你再执行时就会不能打开xls文件。
要确认是不是这个问题很简单,重启下电脑,再执行试试。如果可以打开xls了,那就是这个问题。

其他可能性先不说。追问

试了几遍了~表示还是报错~还有其它解决方法吗

追答

那就不好说了,只能给你一些提示。

本地可以,发布到iis不行,是不是xls文件的路径有问题?可以加几个语句,分别在本地、iis上显示路径来比较是否路径一直。先把对xls文件操作的语句注释掉。

有时中文路径名也会有问题。

参考技术A 提示是说excel文档有可能正在打开中,关闭文档。
有可能excel文档没有读写权限,看看文档安全里面的权限。
还有可能是你写的连接语句错了,看提示 the file''. 这里是你写得文档名称错了。追问

这里看到肯定文件名称是对的,而且文件权限都是全部控制的~有读写的权限。。。。

追答

excel文档是在打开中吗,打开中是导入不了的,还有检查access和excel是不是同一个版本

追问

貌似还是权限问题~ 我傻了~ 谢谢已经搞定了(在百度提过几次问题都没人答%>_<%,看到你的回复很高兴,谢谢!)

本回答被提问者采纳

ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库

access数据库里面有一张表跟datatable的表结构一模一样了,请问怎么用代码将datatable导入access呢
我要的是一次性将表数据导入access,不是一行一行的插入

insert into A select id,name From B
A表 表示access数据库里面有一张表

B表 表示是数据查询出来追问

B表可以是datatable?

追答

上面的SQL语句A表和B表的数据必须要一个数据库中,所以根据你的描述你的数据在两个不同的数据库中,所以只能先使用事务+for循环拼接SQL语句,然后一次执行拼接完成的SQL语句了。

追问

怎么写这个事务呢,怎么拼接语句呢..可以给个例子么

追答StringBuilder Buidler = new StringBuilder();
Buidler.Append("begin tran" + Environment.NewLine);
Buidler.Append(Environment.NewLine);
foreach (DataRow dr in dt.Rows)

     Buidler.Append("INSERT INTO A(id,name) VALUES('" + dr[0] + "','" + dr[1].ToString() + "');");
 
 Buidler.Append(Environment.NewLine);
 Buidler.Append("commit tran");

然后,把Buidler.ToString(),当成一个SQL语句执行一下,就可以了。

追问

IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败。】  为什么报这个错误呢

追答

打断点根进看一下,到底什么地方报错啊。

参考技术A 插入不就行了, Insert Into table values ('值1','值2') 会不? 参考技术B Insert into [表B] Select * from [表A] Where " 插入条件"

我上面的语句就是一次性向表B插入表A中所有的记录,不是一条一条加。如果是无条件的,就把where......删除就行了。

以上是关于.NET把excel数据导入到sql数据库报错:无法打开excel(本地没问题,IIS发布到网站报错),求解!的主要内容,如果未能解决你的问题,请参考以下文章

.net中excel导入sql 2008 报错:未将对象引用设置到对象的实例。

asp.NET 中把Excel文件导入到 Oracle 数据库中怎么做,请大家帮助

excel数据导入SQL SERVER 2000 时间列报错 导入失败

asp.net怎么样把excel文件导入到数据库和导出来(紧急求助+高分)

将数据从 Excel 复制到 SQL 数据库 VB.NET

怎么把excel文件里的数据导入SQL数据库?