问题描述

1、Excel每个工作薄(sheet)生成记录行数

2、asp.net关于导出Excel的一些问题的集锦

3、下载失败,临时文件或其所在磁盘不可写

4、未能加载文件或程序集“Microsoft.Office.Interop.Excel, Version=14.0.0.0,**

5、IIS下发布操作Excel程序时遇到{00024500-00***即80070005错误

6、System.ComponentModel.Win32Exception: 拒绝访问

有关这这几个问题详解。

问题所在环境

操作系统WIndows Server2003、Windows7

IIS6.*、IIS7.*

需安装软件Office2010

详细解决方案

1、Excel每个工作薄(sheet)生成记录行数

"一个excel文件里最多能放多少条数据?"

excel 2003(含)以下 65535 行, excel20071,048,576行

2、asp.net关于导出Excel的一些问题的集锦

a下载不下来:可考虑使用IE自带的下载

b如果使用迅雷,建议先将寻来打开,在进行下载,否则会提示磁盘被占用等的信息

c请设置Templetes/Output/Base下的Excel属性为只读前面的对号去掉

3、下载失败,临时文件或其所在磁盘不可写

[解决方案]

C:\Windows下的Temp文件夹修改安全属性Users赋予权限即可解决;可用

或者

尝试将迅雷的安装目录更改:未尝试

4、未能加载文件或程序集“Microsoft.Office.Interop.Excel,Version=14.0.0.0,**

【问题描述】 

未能加载文件或程序集“Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。系统找不到指定的文件。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.Office.Interop.Excel,Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。系统找不到指定的文件。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

程序集加载跟踪: 下列信息有助于确定程序集“Microsoft.Office.Interop.Excel, Version=14.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c”无法加载的原因。

【解决方案】

警告: 程序集绑定日志记录被关闭。

要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。

注意: 会有一些与程序集绑定失败日志记录关联的性能损失。

要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

服务器上没有安装Office

提出以后,管理员安装了Office2003(注意安装以后要重启电脑)

按照网上找到的一些方法,

安装:

vstor.exe

下载地址:

http://www.microsoft.com/downloads/details.aspx?FamilyId=8315654B-A5AE-4108-B7FC-186402563F2B&display#filelist

然后下载安装:

O2003PIA.EXE

http://www.microsoft.com/downloads/details.aspx?FamilyId=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&display

之后还是没有解决

然后

在服务器上开始-程序-管理工具-Microsoft .NET Framework 2.0 配置-管理程序集缓存-将程序集添加到程序集缓存。选中那些dll即可。

然而不幸的是还是没有解决。

最后重启IIS 问题解决了。

具体怎么解决的就是以上两个方法之一或两者都必须做到。

我认为一个很重要的问题是

在C:\WINDOWS\assembly目录下面必须要有项目的引用。

未能加载文件或程序集“Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c”或它的某一个依赖项。系统找不到指定的文件。

其中的原理是

计算机上缺少了项目引用的Office类文件Interop.Excel.dll

vstor.exe和O2003PIA.EXE是office可重用开发XXX的安装程序。

5、IIS下发布操作Excel程序时遇到{00024500-00***即80070005错误

【问题没描述】英文版

Retrieving the COM class factory forcomponent with CLSID {00024500-0000-0000-C000-000000000046} failed due to thefollowing error: 80070005.

Description: An unhandled exceptionoccurred during the execution of the current web request. Please review thestack trace for more information about the error and where it originated in thecode.

Exception Details:System.UnauthorizedAccessException: Retrieving the COM class factory forcomponent with CLSID {00024500-0000-0000-C000-000000000046} failed due to thefollowing error: 80070005.

ASP.NET is not authorized to access therequested resource. Consider granting access rights to the resource to theASP.NET request identity. ASP.NET has a base process identity (typically{MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if theapplication is not impersonating. If the application is impersonating via<identity impersonate="true"/>, the identity will be theanonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file,right-click the file in Explorer, choose "Properties" and select theSecurity tab. Click "Add" to add the appropriate user or group.Highlight the ASP.NET account, and check the boxes for the desired access.

【问题描述】中文版

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误:80070005。

ASP.NET 未被授权访问所请求的资源。请考虑授予ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户。

要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

【解决方案1】

1:在服务器上安装office的Excel软件.

2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

4:在"DCOM配置"中找到"MicrosoftExcel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应

用程序属性"对话框

5:点击"标识"标签,选择"交互式用户"

6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加

一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK

SERVICE"用户,然后赋予"本地访问"权限.

这样,我们便配置好了相应的Excel的DCOM权限.

注意:这是在WIN2003上配置的,在2000,xp上,NETWORK SERVICE用户改为ASP.net用户

【解决方案】

.NET导出Excel遇到的80070005错误的解决方法:

检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005基本上.net导出excel文件,都需要如此配置一下,不配置有的时候没错,而配置后基本应该不会出错。

具体配置方法如下:

1:在服务器上安装office的Excel软件.

2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

4:在"DCOM配置"中找到"Microsoft  Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"MicrosoftExcel 应用程序属性"对话框

5:点击"标识"标签,选择"交互式用户"

6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK  SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK  SERVICE"用户,然后赋予"本地访问"权限.

8.如果交互式用户设置后出现错误8000401a,可取消交互式用户,指定为administratr,可暂时解决此问题。进一步的解决方式还有待探讨。

9.采用第8点的设置后,打开Excel可能会出现“无法使用对象引用或链接”,并且不能进行单元格粘贴。原因不明,取消设置后即可消失。

另外说明:光按以上设置并不能完全保证不出问题,因为调用OFFICE的操作可能涉及其他的系统资源,很可能依然权限不够而导致问题,只是设置EXCEL应用程序后,还是可能会报80070005的错误,最保险的是应该在dcomcnfg中选中我的电脑然后右键属性->com安全,将里面的访问权限,启动和激活权限全都编辑默认,在当中加上network service(iis 5.0的话,要加的是asp.net用户),并如前面对networkservice设置上相同的权限,这样基本上能保证不会再出什么问题。

以上为基本出路方法,但是我也遇到过应用以上方法还是报错的情况,我的环境是windows2003 + office2003+office2007,在测试服务器上都可以导出无任何问题!但是更新了正式环境就是报错,权限都设置了还是报错,因为我的测试服务器是默认office启动的,所以我怀疑是office版本环境问题!于是我卸载了office2007,马上测试ok了,但是重启服务器后就产生了have not been Pre-compiled错误,导出页面都无法打开了,于是我又重新安装了office2007,页面可以打开了,但是导出excel时又开始报错!我又把所有的权限重新设置一遍,问题依旧!后来发现两个服务器默认打开excel的程序不一样,测试环境是默认office2003打开,正式环境是office2007打开,于是我在正式环境重新注册office2003,使其同样也是默认office2003打开程序,靠!问题终于解决了!!!

注册方法执行    开始----运行----输入excel2003的安装路径,例如"C:\Program Files\Microsoft Office\OFFICE11\excel.exe"/regserver    注意/符号前面有一个空格,其中"C:\ProgramFiles\Microsoft Office\OFFICE11\excel.exe" 是excel2003的安装程序的路径,参数regserver表示注册的意思!

运行后,会启动Office 2003的安装程序,进行修复,重新注册。

excel2007为默认的启动程序的方法类同,可以执行   开始----运行----"D:\ProgramFiles\Microsoft Office\Office12\excel.exe" /regserver

综上所述,再遇到Excel导出、导入问题时,先考虑权限问题,再考虑office的版本环境!如此基本能够解决这些问题了

6、System.ComponentModel.Win32Exception:拒绝访问

【问题描述】

拒绝访问。

说明执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息System.ComponentModel.Win32Exception:拒绝访问。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:

 [Win32Exception (0x80004005): 拒绝访问。]   System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited) +964480   System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) +396   System.Diagnostics.Process.GetProcessTimes() +67   System.Diagnostics.Process.get_StartTime() +31   Hosentic.CommonHelper.ExcelHelper.KillExcelProcess() in D:\Workspaces\visual studio 2010\hxtr\Soft_Hisense_MobileSales\Hosentic.CommonHelper\ExcelHelper.cs:1852   Hosentic.CommonHelper.ExcelHelper.Dispose() in D:\Workspaces\visual studio 2010\hxtr\Soft_Hisense_MobileSales\Hosentic.CommonHelper\ExcelHelper.cs:1897   Hosentic.CommonHelper.ExcelHelper.SaveFile() in D:\Workspaces\visual studio 2010\hxtr\Soft_Hisense_MobileSales\Hosentic.CommonHelper\ExcelHelper.cs:1651   Soft_Hisense_MobileSales.BLL.Base.DeliveryBatchOutputHandler.ProcessRequest(HttpContext context) in D:\Workspaces\visual studio 2010\hxtr\Soft_Hisense_MobileSales\Soft_Hisense_MobileSales.BLL\Base\DeliveryBatchOutputHandler.cs:123   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

【解决方案】

添加一句代码

<identity impersonate="true" userName="accountname"password="password" />

加在System.web下

<system.web>

<identity impersonate="true"userName="Administrator" password="1234568@abc.1" />

<customErrorsmode="Off"/>

<httpRuntimemaxRequestLength="102400" executionTimeout="720"/>

<!--

设置 compilation debug="true" 可将调试符号插入到

已编译的页面。由于这会

影响性能,因此请仅在开发过程中将此值

设置为 true。

【Internet注解】

前两天在VS2005下做个项目,用里面集成的Web服务调试没问题,但当把该项目在IIS下配置后,用浏览器浏览结果则不正确,这个问题郁闷了一天,后来我想不出招就让我同事调试了一下,他在Web.config中加了一句话:“<identity impersonate="true"  userName="操作系统用户"password="用户密码"/>”,浏览…,结果正确,后来我就在网上查了下这句话的作用,MSDN是这样说的:
1、模拟 IIS 验证的帐户或用户

若要在收到 ASP.NET 应用程序中每个页的每个请求时模拟 Microsoft Internet 信息服务 (IIS) 身份验证用户,必须在此应用程序的Web.config 文件中包含 <identity> 标记,并将 impersonate 属性设置为 true

2、为 ASP.NET 应用程序的所有请求模拟特定用户

若要为 ASP.NET 应用程序的所有页面上的所有请求模拟特定用户,可以在该应用程序的 Web.config 文件的 <identity> 标记中指定userName 和 password 属性。例如:
<identityimpersonate="true" userName="accountname"password="password" />

IIS下发布关于Excel导入导出时遇到的问题集锦(转)的更多相关文章

  1. 基于 POI 封装 ExcelUtil 精简的 Excel 导入导出

    注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能.过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好. 序 由于 poi 本身只是 ...

  2. java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

    最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...

  3. Excel导入导出的业务进化场景及组件化的设计方案(上)

    1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...

  4. 关于Excel导入导出的用例设计

    目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...

  5. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  6. Octopus——excel导入导出工具

    Octopus Octopus是一个简易的Excel导入导出工具.目前主要就两个功能: 导入:将excel中一行数据转换为指定的java对象,并通过指定的正则表达式检查合法性. 导出:按照给定的xml ...

  7. Mego(04) - NET简单实现EXCEL导入导出

    前言 相信做过信息系统的朋友都会遇到EXCEL导入导出的相关开发,做过不少EXCEL导入导出后总结起来大致有如下几种方式实现: ADO.NET的OldDb或ODBC连接EXCEL使用DataTable ...

  8. JeeSite中Excel导入导出

    在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...

  9. 土制Excel导入导出及相关问题探讨

    转载请注明出处https://www.cnblogs.com/funnyzpc/p/10392085.html 新的一年,又一个开始,不见收获,却见年龄,好一个猪年,待我先来一首里尔克的诗: < ...

随机推荐

  1. GoogLeNet InceptionV2/V3/V4

    仅用作自己学习 这篇文章中我们会详细讲到Inception V2/V3/V4的发展历程以及它们的网络结构和亮点. GoogLeNet Inception V2        GoogLeNet Inc ...

  2. UINavigationController + UIScrollView组合,视图尺寸的设置探秘(三)

    还是在苹果的 View Controller Catalog for iOS 文章中找到答案.文中提到了两点: 1.If the navigation bar or toolbar are visib ...

  3. day01.2-计算机网络协议

    注:本文摘自林海峰老师的博客,作为个人学习笔记,日后方便阅读,原文详见链接www.cnblogs.com/linhaifeng/articles/5937962.html 一.  ISO协议     ...

  4. C,C++网络编程学习简明指南

    C,C++网络编程学习简明指南 1. 扎实的C,C++基础知识 参考资料<C程序设计>,<C++ primer>. 2. TCP/IP协议 经典书是:W.Richard Ste ...

  5. SIGHUP信号

    SIGHUP会在以下3种情况下被发送给相应的进程:1.终端关闭时,该信号被发送到session首进程以及作为job提交的进程(即用 & 符号提交的进程)2.session首进程退出时,该信号被 ...

  6. 快速找出故障机器(single number)

    简单起见,假设每个机器存储一个标号为ID的记录(ID是小于十亿的整数),假设每份数据都保存两个备份,这样就有两个机器储存了同样的数据. 1.在某个时间,如果得到一个数据文件ID的列表,是否能够快速地找 ...

  7. 2019-5-1 maven学习笔记

    一.maven的好处 同样的项目使用maven工程来实现,由于不需要导入很多jar包,源码很小 原理:根据坐标到项目的仓库里查找需要的依赖 二.安装步骤 1.到http://maven.apache. ...

  8. Django之auth模块(用户认证)登陆组件

    auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的 ...

  9. POJ3368

    http://poj.org/problem?id=3368 给出一个升序数组和 q 个查询.对每个查询,返回 a b 之间出现次数最多的那个元素的出现次数. 这一类区间查询的问题很容易想到用线段树来 ...

  10. 关于form组件的补充-------formChoice

    form组件的Choice字段 还是基于出版社和书的模型来详解 models.py(模型) from django.db import models # Create your models here ...