最近做了一个网站,其中有一个在服务器端执行OFFICE自动化的功能。由于之前未了解到对方服务器安装的是win2000 server,所以安装后在服务器上自动执行Excel程序时发生了好多问题,现收集问题及解决如下:
环境:win2000 server、ASP.NET2.0、Microsoft Excel 2003
常见类似错误(实例化Excel.Application时):检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005
1、由于要在服务器上自动调用Excel进程以执行相关自动化操作,所以要对“组件服务dcomcnfg”中的Excel程序进行权限配置。
问题:运行 / dcomcnfg 选择“Microsoft Excel 应用程序”再点“属性”,但仅弹出提示“操作成功完成”,并不能对其进行属性设置。
解决:在注册表中手动注册Excel组件。运行 / regedit / HKEY_CLASSES_ROOT/AppID,手动添加项“{00020812-0000-0000-C000-000000000046}”,默认数据值为“Microsoft Excel 应用程序”。
2、以下是在dcomcnfg中对Excel的配置情况:
常规:默认值
位置:在这台计算机上运行程序
安全性:全部使用自定义权限,点击编辑添加,主要是添加ASP.NET用户。
访问[admin/aspnet 允许访问]
启动[admin/aspnet/interactive/iusr_/iwam_/system 允许调用]
配置[admin/aspnet/creator完 owner/everyone读/power users特/system terminal server user特/users读]
身份标识:启动用户
说明:在win2003 server中,则是添加NETWORK SERVICE用户。给"启动和激活权限"添加填加NETWORK SERVICE用户,赋予“本地启动”和“本地激活”权限。给“访问权限”添加NETWORK SERVICE用户,赋予“本地访问”权限。身份标识“启动用户”如不行,可以试选择“交互式用户”。
3、由于当前功能是在服务端调用EXCEL进程并打开预先设置的模板文件,把EXCEL源数据文件经过程序处理再写入模板文件另存为,如此处理几十个或上百个EXCEL源数据文件。事后发现在C盘根目录生成了若干EXCEL文件快捷方式。处理了多少个,就生成多少个,似乎还有模板文件和存放最终数据的文件夹快捷方式,看着十分的不爽,虽说快捷方式文件占用磁盘很小,但下次运行还会再次生成,形成了大量的垃圾文件,而且关建是位于C盘根目录。我们知道 OFFICE在操作文档时会在Recent目录生成文档的快捷方式(开始 / 文档),且可以去控制生成。而此处的快捷方式并非属于上述的Recent所有。经查,操作OFFICE文档时,同时还会在C:/Documents and Settings/用户名/Application Data/Microsoft/Office/Recent文件夹(不同于上述Recent文件夹)中生成快捷方式。现在C盘的文件似乎应属于这个目录,由于某种原因不能生成到这个目录而被自动“安置”到了C盘根目录。
解决(未必通用):检查上述目录是否存在,当时对方的服务器环境中就没有Recent文件夹,手动建立后,就不会生成到C盘了。奇怪的是快捷方式不仅没有在C盘生成,也没有在上述文件夹生成,经搜索,是根本就没有生成。在本机的虚拟机测试时,生成的位置不是Administrator用户而是 Default User用户下。
4、问题:由于功能需要,用模板生成EXCEL文件中的工作表很多,但打开后总是定位到最后一个Sheet,客户要求文件打开后是在第一张工作表。
解决:在保存新生成的文件前将第一个Sheet置为活动。((Excel._Worksheet)workBook.Sheets[1]).Activate(); 注意是Excel._Worksheet而不是Excel.Worksheet,后者会提示警告“方法 “Microsoft.Office.Interop.Excel._Worksheet.Activate()”和非方法 “Microsoft.Office.Interop.Excel.DocEvents_Event.Activate”之间存在二义性。将使用方法组 ”。
ASP.NET服务端自动化操作Excel的问题汇总收藏
最新推荐文章于 2024-08-17 06:58:38 发布