将 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 时添加文本

将数据从 Excel 复制到 SQL 数据库 - 不上传所有记录

如何将excel数据加载到sql server 2008表中?