zoukankan      html  css  js  c++  java
  • asp.net操作word的表格

    近日开发中用户要求实现导出数据为Word,本来想使用html保存为word的实现,但因用户要求样式很高,使用html不好控制,并且导出中包括图片,使用页面导出时图片还是一个路径,不能把图片包括在word中,所以就必须使用原生的Word进行操作了。

    开发环境:windows 8 + visual studio 2010 + dotnetframework 4 + word 2010

    开发过程:

    1. 因之前并没有开发过word应用,所以先创建一个word应用程序,看看引用了哪些Dll;

    2. 创建一个asp.net应用程序,命名为MyWebWord,添加word应用程序中对word相关的引用:

    Microsoft.Office.Interop.Word
    Microsoft.Office.Tools
    Microsoft.Office.Tools.Word
    3. 先创建word模板oriWord.doc,放到web应用程序下的wordDod目录下;
    4 . 然后创建代码,主要代码如下:
    ...
    using Word = Microsoft.Office.Interop.Word;
    ...
    			// 复制文件
                string oriFilename = System.Web.HttpContext.Current.Server.MapPath("~/WordDoc/OriWord.doc");
                string targetFilename = System.Web.HttpContext.Current.Server.MapPath("~/WordDoc/New.doc");
                System.IO.File.Copy(oriFilename,targetFilename,true);
                Word.Application WordApp = new Word.ApplicationClass();
    			// 打开文件
                Word.Document doc = WordApp.Documents.Open(targetFilename);
                try
                {
    				操作word中的表格
                    Word.Table tbl = doc.Tables[1];
                    tbl.Cell(3, 2).Range.Text = "张三";
                    tbl.Cell(4, 2).Range.Text = "A公司";
                    tbl.Cell(5, 2).Range.Text = "38岁";
                    tbl.Cell(6, 2).Range.Text = "开发工程师";
    ......
                }
                finally
                {
                    doc.Save();
                    doc.Close();
                    WordApp.Quit();
                    doc = null;
                    WordApp = null;
                    
                }
    
    在vs开发服务器下运行正常。
    5. 部署到windows2008服务器上,出现com clsId。。。拒绝操作的错误,经先后多次搜索、尝试,最后成功,具体操作如下:
    a.在webconfig中增加模拟管理权权限
    在system.web节点下增加
    <identity impersonate="true" userName="系统管理员" password="系统管理员密码"/>
    一般情况下能够解决上面的问题。能够操作服务器新建EXCEL,WORD。
    但是在OFFICE 32和WINDOWS 64位的情况下,似乎不能操作EXCEL和WORD。  
    b. 在组件服务-DCOM设置 Excel 和 Word App的属性,从管理工具中进入(或命令行dcomcnfg进入)
      找到Microsoft Office Word 97 - 2003文档,

    点击右键--属性--“标识”tab--选交互用户。
    再在“安全”tab--“启动和激活权限”--自定义--编辑--安全性--添加"NETWORK SERVICE"用户--“本地启动”和“本地激活”权限。
    依然“安全”tab--“ 访问权限 ”--自定义--编辑--安全性--添加"NETWORK SERVICE"用户--“本地启动”和“本地激活”权限。 
    重启IIS。

    到此在IIS8中asp.net操作word的配置完成,测试运行也正常了。

    在开发过程中也存在了另外一个问题,一直没有能够解决:
      在win8的IIS中运行时,打开word文档时,不报错,而是直接返回为空,多种尝试都没有结果,而且不win8下dcom设置中没有显示上图中的的word文档,网上说的word的id,在win8下的dcom中也没有出现,所以也一直没有运行成功。哪位大牛知道如何处理,请指教一下。

  • 相关阅读:
    tornado学习
    pycharm使用技巧
    k8s排查问题利器-----kubectl debug
    linux的python3 环境配置
    flink入门学习
    jenkins deploy key的使用
    通过浏览器模拟网速慢,接口block等异常情况
    curl常用语法举例
    jmeter测试双向认证https接口
    一些开发的总结
  • 原文地址:https://www.cnblogs.com/riskyer/p/3285628.html
Copyright © 2011-2022 走看看