EXCEL导出问题

问题描述:
运行时遇到错误:未能加载文件或程序集“microsoft.office.interop.excel, version=15.0.0.0, culture=neutral, publickeytoken=71e9bce111e9429c”或它的某一个依赖项。系统找不到指定的文件。
我负责的一个报表系统使用C#开发的,有一次系统升级后我只是测试了查询没问题就下班了,第二天还没睡醒就接到客户电话说报表系统导出报错。我马上登录系统导出时报错:
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a tag within a "web.config" configuration file located in the root directory of the current web application. This tag should then have its "mode" attribute set to "Off".

翻译“描述:应用程序错误发生在服务器上。此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因)。它可以,但是,可以查看浏览器运行在本地服务器上的机器。”
我马上登录服务器访问并导出,报错:
运行时遇到错误:未能加载文件或程序集“microsoft.office.interop.excel, version=15.0.0.0, culture=neutral, publickeytoken=71e9bce111e9429c”或它的某一个依赖项。系统找不到指定的文件。
但web.config配置文件中配置的:

我在网上查找了好多资料有的说在服务器上excel重装有的说打补丁,但服务器环境我不敢动啊,我当时想我明明引用的11.0的怎么变成15.0呢?Microsoft Visual Studio 2010发布网站又是引用的哪个环境呢?
重新生成网站,使用.NET Reflector查看dll包,如下:
EXCEL导出问题_第1张图片

显示microsoft.office.interop.excel 版本是15.0。
查找
是从哪里加载呢? http://blog.sina.com.cn/s/blog_8abeac5b0100zp8n.html 查看资料: C:\WINDOWS\assembly这个目录下。
到本地开发环境这个目录下查找microsoft.office.interop.excel 这个包只有15.0的:
EXCEL导出问题_第2张图片

我找了11.0的包放到目录下,重新发布,还是15.0。.Net版本是2.0在开发环境找到.Net目录:
C:\Windows\Microsoft.NET\Framework\v2.0.50727。在这个目录下有web.config的其他dll文件但没有Microsoft.Office.Interop.Excel.dll这个包。我想是不是发布网站时在.net环境下找不到Microsoft.Office.Interop.Excel.dll 就到系统环境下引用,就成了15.0的版本呢?我找了11.0的版本放到.Net环境下,重新发布。再次查看dll,如图:
EXCEL导出问题_第3张图片
版本变成了配置的版本了。把新发布的包部署到服务上,登录系统验证,系统恢复。我本地系统是15.0的版本我想应该是我装了office2016的原因吧。





你可能感兴趣的:(C#)