前言  

最近因项目需要要自定义标准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

转载于:https://www.cnblogs.com/fsjohnhuang/archive/2012/07/09/2583230.html

根据标准word模板生成word文档类库(开源)相关推荐

  1. word模板生成word报表文档

    主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...

  2. C#根据word模板生成word表格报表文档

    主要功能为根据word模板生成word报表文档,注意引用Interop.Word.dll; 首先要生成word程序对象 Word.Application app = new Word.Applicat ...

  3. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  4. 使用word模板生成word文档的各类方案

    使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...

  5. PHP 使用word模板生成word文档示例

    <?php namespace Home\Controller; use PhpOffice\PhpWord\TemplateProcessor; use Think\Controller; c ...

  6. 使用java Apache poi 根据word模板生成word报表

    使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...

  7. java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...

  8. Springboot通过模板生成pdf文档带图片

    Springboot通过模板生成pdf文档带图片 环境:springboot2.3.10.RELEASE + itextpdf5.5.13.2 依赖 <dependency><gro ...

  9. apache poi使用例_使用java Apache poi 根据word模板生成word报表例子

    [实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...

  10. 根据word模板生成word和PDF

    根据word模板生成word和PDF 需求:有一个固定的合同模板,在vue前台填写指定的信息,替换合同模板指定的内容 我们使用的默认模板内容如图: 我们在前端填写的字段就是合同名称.项目名称和项目金额 ...

最新文章

  1. 二 IOC之PropertyPlaceholderConfigurer
  2. JAVA实现变态跳台阶问题(《剑指offer》)
  3. RAC起单实例make
  4. 2020-11-10(service入门)
  5. (*长期更新)软考网络工程师学习笔记——Section 6 网络层上篇
  6. java stringbuffer倒置_Java程序设计05——String和StringBuffer
  7. 【数据库】数据模型(类型全+白话讲解)
  8. 思维构造——cf1090D
  9. python数据处理随笔总结
  10. OpenMP、MPICH与OpenMPI
  11. keil修改字体、文本颜色、背景颜色,global.prop使用
  12. 从三大方面全面解析物联网卡
  13. Cisco 2960密码恢复
  14. cmd命令查询电脑序列号_硬盘序列号查询软件_如何查看电脑硬盘序列号
  15. 【Chatbot】2:中文聊天机器人的实现
  16. [测试开发面试]zyb面试题总结
  17. 基于 钉钉认证 通过 华为、H3C 结合 OpenPortal认证计费系统 实现 网络准入 钉钉授权 实名认证
  18. Air780E模块RNDIS应用开发指南
  19. 计算机体系结构-精简指令集和复杂指令集
  20. maven使用,Nexus配置阿里云代理仓库,三方仓库,本地仓库

热门文章

  1. 关于Linux平台视频采集程序的修改
  2. python课后题答案第一章_python核心编程课后习题解答第一章
  3. 【Elasticsearch】在Elasticsearch中支持纳秒时间戳
  4. 【java】java 并发编程 BlockingQueue 和 BlockingDeque
  5. 【kafka】消费组 死掉 kafka Marking the coordinator dead for group
  6. 【Yarn】Yarn : 日志管理
  7. Netty : 臭名昭著的JDK的NIO bug(空轮询bug)
  8. spark学习-Spark算子Transformations和Action使用大全(Action章)
  9. docker镜像是否包含操作系统
  10. mysql 获取日期每行_我如何从MySQL表行获取日期和时间