C#操作EXCEL时的一些问题

最近做东西时涉及到了这方面。主要有以下几个问题。
在XP下开发时遇到的问题:
1.生成EXCEL文件并保存后,销毁了Applicaion对象,但是打开任务管理器,里面还是有一个EXCLE.EXE的进程。上网了找了很多方法,最后发现引用User32.dll才能达到预期的效果,用其他的方法均会出现EXCEL进程的残留。
发布到Windows Server2003时遇到的问题:(此处问题较多)
引用
1.无法引用DLL的错误。

ASP.NET中,服务器端调用COM生成Excel,需要在服务器端安装Excel,否则会提示此类错误
MSDN论坛上对这个问题有比较详细的解释
http://social.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/a52899d4-bb23-4802-95cd-87b9a6983dd0
引用
2.形如“检索COM类工厂CLSID为。。。。的组件失败”的错误。

我遇到了两处。原因正如网上所说的,DCOM组件的权限问题。解决方法如下:
a.在WinServer2003的运行中输入dcomcnfg,打开“组件服务”窗口,双击打开“计算机”->“我的电脑”->“DCOM配置”,找到“Microsoft Excel Application”点击右键->“属性”,在“安全”中有“启动和激活权限”、“访问权限”、“配置权限”三项,以第一项为例,后两个项目也照此方法进行设置:将“启动和激活权限”中选择“自定义”->“编辑”->“添加”->“高级”->“立即查找”,在窗口下方的用户列表中找到与IIS和ASP.NET有关的账户ASPNET;IIS_WPG;INTERACTIVE;IUSR_;IWAM_,添加即可,权限设为完全控制(网上有说设为默认即可,我未作验证,不过设为完全控制显然是不好的);
b.在“Microsoft Excel Application”->“属性”->“ 标识”中选择“交互式用户”默认是“启动用户”。如果此种方法不通过,则选择“指定用户”,输入在Server03上有对EXCEL进行操作权限的某个用户的用户名和密码。
c.在WebConfig中配置模拟登录。即在<system.web> 加入 <identity impersonate="true" />。其中userName和password为可选属性。
引用
3.“拒绝访问”错误

原因可能是有两个
1.WinServer2003中仍存在EXCEL.EXE进程。在Server2003下,用我最上面提出的杀掉EXCEL进程的方法是行不通的,系统中仍然会残留进程。网上有说可以将EXCEL的操作包装到一个类中,借由销毁这个类的对象来销毁EXCEL进程,这个方法我没试过,不知能不能行的通。
2.ASP.NET账户没有读写WinServer2003中存放EXCEL目录的权限。解决这个问题,在文件夹“属性”->“安全”中添加用户“EveryOne”,使其对文件夹具有读取和修改的权限即可。

参考资料:
http://topic.csdn.net/u/20091225/09/67802bc8-4e72-449c-afbb-9466f3e318b7.html
http://www.cnblogs.com/shanqian/archive/2009/04/03/1429139.html
.

你可能感兴趣的:(C++,c,Excel,C#,asp.net)