zoukankan      html  css  js  c++  java
  • C#导出Word文档开源组件DocX

    1.帮助文档,这东西找了很久,而且它版本很旧,还是英文,W8.1系统上打不开

    http://download.csdn.net/detail/zuofangyouyuan/7673573

    2.开源网址:http://docx.codeplex.com/

    每次见到导出WORD文档的那一堆代码就马上远离,但这回是逃不过了,做项目要用.在经历了各种C#搞WORD的类库之后,找到了这个DocX.虽然它没有实用的中文文档,但比起其它类库来有三个优点

    1.引入方便 将DocX.dll引入到项目就行了

    2.不需要搞各种帮助类库

    3.采用操作XML的方式

    由于没有找到实用的文档,只好做了很多试验,由于水平不高,也以也看不懂源码.目前只希望用它最简洁的方法实现要求.于是采取下述方法

    1.WORD模板,就是建好一个WORD文档,将里面需要替换的内容做成标识.做标识有几种方法,域,变量,书签.都没去学,最后就用了替换字符串的经典办法.比如在打印名字的地方,放个$name,当然,要保证这名字唯一.

    循环替换:如果遇到数量不定的地方怎么办呢,也可以放一个$value,然后再替换之后,再加上$value,循环退出前再删掉这个$value

    表格:如果有表格(一定有的)怎么办呢,可以放一个表格头在那里.程序里找到这个表格的方法是doc.Tables[index],然后操作这个表格就行了.

    还没有解决的地方:不知道怎么在程序中将输入点定位到我指定的变量处,目前的做法是,替换那个变量,然后再加内容,这时就会很那个变量处开始.

    2.使用方法和XML操作一样

    // 目标文件路径
    string docName = "C:/work.docx";
    // 建立文档(使用模板)
    DocX doc = DocX.Load(docName);//也可以是流

    3.实用的方法

      替换字符串:doc.ReplaceText("$name", "博客1");

      插入段落:doc.InsertParagraph("文字");

      表格合并单元格:

        Table tb=doc.Tables[0];// 表示文档里的第一个表格

        tb.MergeCellsInColumn(columnIndex,startrowIndex,endrowIndex);// 这个是在某一列上合并上下行在该列中的单元格

        tb.Rows[0].MergeCells(startcellIndex, endcellIndex);// 这是在某一行中,合并左右列在该行中的单元格

      段落的样式:

        Paragraph p=doc.InsertParagraph("文字");

        p.Font(new System.Drawing.FontFamily("微软雅黑"));
        p.FontSize(12);

        p.Alignment = Alignment.center;// 中间对齐

    还有很多,目前1天就研究了这些东西.希望以后不再要研究.

  • 相关阅读:
    C程序的存储空间布局
    获取系统数据文件信息
    基于UDP的一对回射客户/服务器程序
    一段经典的 Java 风格程序 ( 类,包 )
    Vue 脱坑记
    vue面试题总汇
    JavaScript调试技巧
    伪元素小技巧
    JavaScript 开发人员需要知道的简写技巧
    select2插件改造之设置自定义选项 源码
  • 原文地址:https://www.cnblogs.com/mirrortom/p/4432299.html
Copyright © 2011-2022 走看看