背景
这是一份来自日常工作中的需求。服务台一位同事请教如何将Excel表格中的数据填充到Word指定的模板内。新生开学季,各院系辅导员代领校园卡。需要打印一份领取卡的协议,协议模版固定,但各院系卡的数量不同。需要从excel表格中抽取院系、领卡总数等数据往word文件中填。
实现
实现这个功能分三步:从Excel中读取要填充的数据,制作word模板,将读取出的数据往word模板中填充。跟大象放冰箱需要几步一个意思 ~~
C#读取Excel数据
Excel表格的数据内容大概如下图,通过OLEDB将Excel数据读取到一个DataSet里面,等会需要遍历这个DataSet的数据来往模板中填充。
实现读取Excel数据代码如下:
1 | private static DataSet LoadDataFromExcel(string filePath) |
word模板文件制作
.dot 是word的模板文件格式(word2019模板格式为.dotx),你可以依据这个模板来生成一系列的类似的文档文件(.doc或.docx)。同事需要的文档内容大致如下。在标记的几个位置需要填充指定的数据(来源自Excel表格)。因此,我们制作一个模板文件,固定内容如图所示,动态填充的数据,我们通过添加书签的方式。
word中,光标移动到指定位置,选择菜单中的插入->书签。在弹出的书签编辑框中,输入书签名称。比如,我们在图中“制作”和“本科生”之间插入department的书签名,代表这里要填充院系名称。其他位置添加书签方法类似。
数据动态填充word模板
好了,现在万事具备,只欠写数据了。在C#
操作word文档之前,需要在项目中添加Com组建,VS项目中右键,“添加引用” –> “COM” –> “MicroSoft Office 15 Object Library”。添加完成后,通过下面的代码即可完成依据模板生成文档。
1 | private void CreateWordDocs_Click(object sender, EventArgs e) |
复盘
同事的需求过来后,简单搜索一下,有了大概思路。本来同事希望通过邮件模板来做,但最终需要打印,还是做成文档更方便。有了思路以后,通过编程实现不再困难。
- 本文作者: 达文西
- 本文链接: https://edsiongithub.github.io/2021/06/21/11/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!