• 根据标准word模板生成word文档类库(开源)


    前言                                                                                                                           

      最近因项目需要要自定义标准word模板,并以编码方式操作word模板、填充数据和生成word文档,于是自己写了条小“内裤”来实现这个功能。该“内裤”只针对ooxml格式的word文档,当然大家可以用Aspose.words或其他第三方吧ole格式的转成ooxml格式的文档后再“穿这条裤”^_^。

      类库操作ooxml方面使用的是OpenXML SDK,所以需要.framework 3.0及以上版本的支持。

      今天贴上来的是第二版,第一版做得太粗糙了就不贴了,虽然第二版仍存在很多待改进的地方。旨在分享、讨论,希望大家多多指教。

      具体的标准word模板定义请见压缩文件的PPT吧!

    组件描述                                                                     

    通过该组件可获取word标准模板中的填充域,将文本、图片和表格信息填充至填充域并生成word文档。
    其中规定word标准模板的文件格式为.docx和.dotx,输出的word文档文件格式为.docx。

    该组件的填充域类型:
    1.段落中的填充域;
    2.填充域作为段落存在;
    3.表格单元格(仅含水平表头-可插入任意多行数据、含水平和垂直表头-仅能填充模板中固定的单元格)。

    该组件的填充内容类型:
    1.文本(可设置字体、字体颜色、字体大小、背景色)
    2.图片(可设置图片宽高)
    3.表格(可设置单元格宽度)

    填充规则:
    1.段落中的填充域可填充文本和图片;
    2.填充域作为段落时可填充文本、图片和表格,还可以通过AddContentLine方法在填充文本和图片后换行;
    3.表格单元格时可填充文本、图片,还可以通过单元格CellInfo对象的AddContentLine方法在填充文本和图片后换行。

    使用说明                              

    引用WordMLHelper.dll。

    1.调用WordMLHelper的GetAllTagInfo方法(只接受后缀为.docx和.dotx的模板文件路径)获取word标准模板的填充域集合List<TagInfo>;
    2.填充域对象(TagInfo)的Tbl属性(类型为TblStructureInfo)表示表格单元格类型的填充域对象(默认值为null代表该填充域非表格单元格类型),可通过Tbl[rowIndex,cellIndex]的方式获取表格的单元格,并调用单元格(CellStructureInfo)的AddContent和AddContentLine(填充内容后换行)方法填充文本和图片;
    3.Tbl属性的TblType变量表示该表格是仅含水平表头(HORIZONTAL_HEADER)还是含水平和垂直表头(HORIZONTAL_VERTICAL_HEADER)。
    4.根据需要将文本(TxtInfo对象)、图片(ImgInfo对象)和表格(TblInfo对象)通过调用填充域(TagInfo对象)的AddContent和AddContentLine(填充内容后换行)方法填充到填充域中。
    5.TxtInfo、ImgInfo和TblInfo类中含高度、宽度等样式属性。
    6.若填充内容为不含样式的纯文本内容,则可通过WordMLHelper中的FillContentWithoutStyle方法将文本信息填充至填充域。
    7.若要将不含样式的纯文本内容填充到表格单元格类型(仅含水平表头)的填充域,则可调用WordMLHelper中的FillContentToTable(TagInfo tagInfo, DataTable dt)。
    8.若要生成不含样式的纯文本内容的表格,则可调用WordMLHelper中的FillContentToTable(TagInfo tagInfo, DataTable dt)。
    9.调用WordMLHelper的GenerateWordDocument方法即可生成word文档。
     

    接口                                      

    WordMLHelper:操作模板类
    方法如下:
    GetAllTagInfo:获取模板填充域及附加信息
    FillContentToTable:快速填充、生成纯文本表格
    FillContentWithoutStyle:快速填充纯文本内容到填充域
    GenerateWordDocument:根据模板生成word文档

    TagInfo:填充域类
    属性如下:
    Seq:填充域的序号
    TagTips:填充域的提示信息
    Tbl:表格单元格填充域类型对象(默认为null,表示非表格单元格填充域类型)

    TxtInfo:文本类型填充内容类
    属性如下:
    Size:字体大小
    ForeColor: 字体颜色
    HightLight: 背景色(高亮)
    FontFamily: 字体
    Content: 文本内容

    ImgInfo:图片类型填充内容类
    属性如下:
    Width: 图片宽度
    Height: 图片高度
    ImgPath: 图片路径

    TblInfo:表格类型填充内容类
    属性如下:
    Width: 表格宽度
    Rows: 行集合
    方法如下:
    AddRow: 填充行

    RowInfo: 表格类型填充内容的表格行类
    属性如下:
    Cells: 单元格
    方法如下:
    AddCell: 填充单元格

    CellInfo: 表格类型填充内容的单元格类
    属性如下:
    Width: 单元格宽度
    ColSpan: 列合并数(默认为1)
    RowSpan: 行合并数(默认为1)
    方法如下:
    AddContent: 添加填充内容
    AddContentLine: 添加填充内容并换行

    TableStructureInfo: 表格单元格类型的填充域类
    属性如下:
    TblType: TblType枚举类型,表示表格是仅含水平表头还是含水平和垂直表头
    Rows: 行集合
    方法如下:
    AddRow: 填充行

    RowStructureInfo: 表格单元格类型的填充域的表格行类
    属性如下:
    Index: 该行在模板表格中的行索引(只读)
    Cells: 单元格集合
    方法如下:
    AddCell: 添加单元格

    CellStructureInfo: 表格单元格类型的填充域的单元格类
    属性如下:
    Index: wordML中的列索引(大于或等于该单元格实体在行实体中的索引值)(只读)
    ColSpan: 合并列数目(默认为1,即是不合并)(只读)
    RowSpan: 合并行数目(默认为1,即是不合并)(只读)
    Tips: 单元格中的提示内容(只读)
    IsTemplate: 该单元格是否可填写(只读)
    方法如下:
    AddContent: 添加填充内容
    AddContentLine: 添加填充内容并换行

    源代码:http://www.oschina.net/code/snippet_229858_11745

    欢迎添加我的公众号一起深入探讨技术手艺人的那些事!

    如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!
      

  • 相关阅读:
    PageControl1
    IE6 发送奇数个汉字出现的BUG机器解决之道
    十 C# Socket协议的形象描述
    深入浅出URL编码
    认识session
    Servlet过滤器介绍之原理分析
    web开发标准
    JS 截取字符串及字符与数字转换
    Servet和JSP学习总结(转载)
    端口、系统服务、系统进程概念
  • 原文地址:https://www.cnblogs.com/fsjohnhuang/p/2583230.html
Copyright © 2020-2023  润新知