将 Excel 数据上传到 SQL Server 2005 时出错
Posted
技术标签:
【中文标题】将 Excel 数据上传到 SQL Server 2005 时出错【英文标题】:Error while uploading Excel data to SQL server 2005 【发布时间】:2013-08-27 04:30:56 【问题描述】:我需要将 Excel 数据上传到 SQL Server 2005 表中。最初,我将 Excel 数据复制到临时表中,并根据条件将记录更新并插入到 SQL Server 表中。
在我的本地系统中一切正常。我移到质量服务器的同一个程序我遇到了这个错误
“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。
然后我们在质量服务器上安装了“Microsoft.ACE.OLEDB.12.0 提供程序”。现在出现这个错误
Microsoft Office Access 数据库引擎无法打开或写入文件“”。它已被其他用户独占打开,或者您需要权限才能查看和写入其数据。"
请帮我解决这个问题。
SqlConnection con = new SqlConnection();
con = SQLManager.openSQLConnection();
string path = FileUpload1.PostedFile.FileName;
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0 Xml;Persist Security Info=False";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
OleDbCommand cmd = new OleDbCommand("Select [CM_CODE],[CM_NAME],[CM_ADD1],[CM_ADD2],[CM_ADD3],[CM_ADD4],[CM_CITY],[CM_PHONE],[CM_CG_CODE],[CM_CO_CODE],[CM_EXPIRY_DATE],[CM_PINCODE],[CM_EMAIL] from [Sheet1$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
问候, 沙迪亚
【问题讨论】:
服务器进程是否可以访问文件路径或者它甚至可以看到它? 我正在通过包含我的应用程序的 URL 访问服务器系统。 Excel 表上传是通过我的应用程序从我的系统上传的。 如果您通过您的网站上传一个 excel 文件,当您的进程尝试访问该文件时,IIS 可能仍在处理该文件的上传,因此会出现您看到的错误。 谢谢@Nathan .. 但我还是没听懂你吗?你能详细说明一下并给我解决这个问题的解决方案吗? 从您当前的错误来看,似乎有东西正在访问已上传的文件。几个问题,1. Excel 文件如何上传到服务器,2. 运行代码的应用程序是什么?它是网站、windows 服务、winforms 应用程序吗?如果您手动将 Excel 电子表格复制到同一位置然后进行处理,会发生什么情况。那它有用吗? 【参考方案1】:这很可能是文件权限问题。运行程序的帐户是否具有从文件位置读取文件的文件夹级别权限。
找出程序在哪个帐户下运行,然后为您上传 excel 文件的文件夹添加适当的访问权限。
如果是 IIS,那么无论您的应用程序池在哪个帐户下运行,都需要对您上传到的文件夹具有写入权限。权限通常只能由网络服务器管理员设置。
翼
【讨论】:
【参考方案2】:我终于找到了解决方案。 我在质量服务器的应用程序文件夹下创建了一个文件夹。 上传的 excel 表格将存储在这个新文件夹下。 以及我在更新我的 SQL 服务器数据库时所指的路径。 现在一切正常... 谢谢大家的支持
问候, 沙迪亚
【讨论】:
以上是关于将 Excel 数据上传到 SQL Server 2005 时出错的主要内容,如果未能解决你的问题,请参考以下文章
从 Azure Excel blob 文件将数据导入 SQL Server
使用 C# 和 ASP.NET 将数据从 Excel 文件导出到 SQL Server 表的最佳方法? [复制]
使用 VBA 在 SQL Server 中上传 Excel 文件数据
使用 SQLBulkCopy 从 excel 到 SQL Server 时添加文本