当前位置: 首页 > news >正文

C#操作Excel,权限问题



C#导出Excel
 
当我们导出的Excel文件要求严格的格式时,就需要把Excle做成模板,在导出时首先复制原来做好的模板,然后在模板上操作Excel就会保留原来的格式,但是在C#操作文件时会遇到一些权限上的问题,我们这里以操作Excel为例说明一下:

首先配置DCOM解决操作权限问题,具体步骤如下:

1:在服务器上安装officeExcel软件.

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

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

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

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

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

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

注:在XP系统中还要添"加机器名/ASPNET"用户的上述权限

其次要解决部署在Window Server 2003 Excel.exe进程问题

在操作完Excel以后,每次就会留下一个Execl.exe进程,无论如何也关闭不了,包括用垃圾回收等,原因我也不知道,但是在其他服务器操作系统和xp操作系统上不存在这种问题。

解决此类问题,有一个方法可以借鉴,就是杀死进程的方法,但是有一定的风险,要注意,具体方法如下:

操作进程有一定的风险,所有首先要有此类权限,添加权限方法,在web.Config里面添加权限<identity  impersonate="true"   userName="登录名"   password="密码 "/>

 

杀死进程方法

public static void KillProcess(string processName)

        {

            System.Diagnostics.Process myproc = new System.Diagnostics.Process();

            //得到所有打开的进程

            try

            {
               foreach (Process thisproc in Process.GetProcessesByName(processName))

                {
                    if (!thisproc.CloseMainWindow())

                    {

                        if(thisproc!=null)

                        thisproc.Kill();

                    }               

                }

           }
            catch (Exception Exc)

            {
                throw Exc;
            }

        }  

在操作完Excel后,调用杀死进程方法就可以了,下一次就会正常调用。




相关文章:

  • Unable to convert MySQL date/time value to System.DateTime
  • org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 52 in XML document from
  • Extjs页面加载非常慢的处理
  • 如何将struts2中Action的默认后缀由.action改为.do
  • [SetContextPropertiesRule]{Context} Setting property 'source'
  • problem中Project'XX'is missing required library:'[路径]\XXX.jar'解决方法
  • struts2动态方法调用 无效问题
  • powerDesigner Non SQL Error : Could not load class com.mysql.jdbc.Driver
  • HttpClient 4 和 HttpClient 3 设置超时
  • tomcat的目录结构
  • struts2中改变struts.xml默认路径
  • 集成spring3、hibernate4、junit
  • 解决android开发中eclipse不能自动提示
  • 关于Eclipse出现failed to create the java virtual machine错误的解决办法
  • java.lang.NoClassDefFoundError: org/jaxen/JaxenException at spring.SpringTest.readXML
  • 收藏网友的 源程序下载网
  • DataBase in Android
  • maven工程打包jar以及java jar命令的classpath使用
  • Terraform入门 - 1. 安装Terraform
  • 成为一名优秀的Developer的书单
  • 搭建gitbook 和 访问权限认证
  • 机器学习 vs. 深度学习
  • 双管齐下,VMware的容器新战略
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一个JAVA程序员成长之路分享
  • 用Visual Studio开发以太坊智能合约
  • 在Unity中实现一个简单的消息管理器
  • 自制字幕遮挡器
  • 【云吞铺子】性能抖动剖析(二)
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # include “ “ 和 # include < >两者的区别
  • #pragma 指令
  • (¥1011)-(一千零一拾一元整)输出
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (ZT)薛涌:谈贫说富
  • (二)斐波那契Fabonacci函数
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (转)创业家杂志:UCWEB天使第一步
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net mvc部分视图
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • @RequestMapping处理请求异常
  • @WebServiceClient注解,wsdlLocation 可配置
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Android]常见的数据传递方式
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • [JDBC-1] JDBC Base Template
  • [JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏
  • [leetcode]114. Flatten Binary Tree to Linked List由二叉树构建链表