zoukankan      html  css  js  c++  java
  • 用automation做报表操作权限

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

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

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

    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后,调用杀死进程方法就可以了,下一次就会正常调用。

  • 相关阅读:
    HFUT 1356.转啊转(安徽省2016“京胜杯”程序设计大赛 E)
    HFUT 1354.砝码称重(安徽省2016“京胜杯”程序设计大赛 A)
    AOJ 331.汉诺塔
    AOJ 763.过河卒
    AOJ 762.分数数列
    AOJ 761.Fibonacci序列
    AOJ 760.尾数相等的数
    POJ 1035.Spell checker
    POJ 2299.Ultra-QuickSort
    POJ 2503.Babelfish
  • 原文地址:https://www.cnblogs.com/arraylist/p/1501320.html
Copyright © 2011-2022 走看看