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天就研究了这些东西.希望以后不再要研究.

  • 相关阅读:
    sublime开启vim模式
    git命令行界面
    搬进Github
    【POJ 2886】Who Gets the Most Candies?
    【UVA 1451】Average
    【CodeForces 625A】Guest From the Past
    【ZOJ 3480】Duck Typing
    【POJ 3320】Jessica's Reading Problemc(尺取法)
    【HDU 1445】Ride to School
    【HDU 5578】Friendship of Frog
  • 原文地址:https://www.cnblogs.com/mirrortom/p/4432299.html
Copyright © 2011-2022 走看看