c# - 如何在 IIS 上启用读取 C# Excel 文件(在运行 IIS 的机器上本地读取它们工作正常)?

标签 c# excel iis connection-string 32bit-64bit

在 C# 中读取 Excel 文件时遇到问题 The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine. , 与 'Microsoft.ACE.OLEDB.12.0' 相同.只有当我在 IIS 上运行我的应用程序时才会发生。 在运行 IIS 的机器上本地运行它工作正常。

有问题的机器在 Win2003 R2 Enterprise x64 上运行。我在 VS2010、ASP.Net 4.0 中开发。

看起来这个问题有两种解决方案:要么安装一些东西(首选)要么切换到 32 位模式。我想了解这两种解决方案的含义,因为这些服务器上还运行着其他应用程序,而更改服务器需要花费大量时间并且非常痛苦。

  1. 可以安装Microsoft Access Database Engine 2010 Redistributable改变现状?也许我应该安装另一个版本/其他东西?来源:http://www.arboundy.com/2010/11/the-microsoft.ace.oledb.12.0-provider-is-not-registered-on-the-local-machine/
  2. 是否按照 http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/405f5bb5-87a3-43d2-8138-54b75db73aa1.mspx?mfr=true 上的说明进行操作意味着此服务器上的所有应用程序都将以 32 位模式运行?如果我将应用程序的设置从 64 更改为 x86,是否有必要这样做?我当前的配置是“任何 CPU”,如果我将其设置为 32 位,我会失去什么?
  3. 编辑:似乎有第三种解决方案,将 dll 直接放入我的应用程序中。这是一个好的解决方案吗?应该是哪个dll?

最佳答案

您好,我目前正在项目中使用 Excel,据我所知,将 dll 添加到项目中很好,尤其是当您无法控制可以在服务器上安装的内容时。我知道有一个大型项目就是这样做的。 Microsoft 建议在部署服务器上安装 Excel 并使用 Interops,这听起来像您正在尝试做的事情。

我无法将 excel 安装到我们的部署服务器上,因为我们必须与其他项目共享它,所以我使用了 EP Plus它在 nuget 上可用,并且非常容易设置和使用。生成 Excel 文件只用了不到一个小时。它的唯一缺点是它只生成 xlsx 文件,这是较新类型的 excel 文件。

这是一种更简单的方法,它可能更容易且适合您的项目。如果您想查看,他们的网站上有大量示例代码。这只是您的另一种选择,希望对您有用。

关于c# - 如何在 IIS 上启用读取 C# Excel 文件(在运行 IIS 的机器上本地读取它们工作正常)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022224/

相关文章:

c# - Biztalk 在 C# 中接收位置

c# - IIS Express 停止 Web 应用程序后立即关闭正在运行的站点

vba - 如何在不更改公式的情况下更改单元格的文本?

excel - 使用 PowerQuery 在 Excel 中堆叠列对

c# - 部署后找不到嵌入式 Razor View (IIS)

c# - Visual Studio 安装项目 : run CustomActions/process as current user not system account

c# - 使用 EF6 和 SQL Server 2012 时是否有替代方法来引用表?

php - 如何使用 php Excel 创建一个新列并连接一些值?

asp.net - 如何在 docker swarm 模式负载均衡器中托管 Asp.net 应用程序

asp.net - 如何处理应用程序错误异常代码: 0xc00000fd