C#通过模板导出Word(文字,表格,图片) 转载(count)

网友投稿 496 2022-06-21


转载地址:https://cnblogs.com/wuhuacong/archive/2013/02/05/2893191.html

C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法,在网上找到了通过模板文件导出Word的方法,记录一下过程.

一:模板的创建

通过模板导出,肯定需要先创建模板,然后顾名思义就是将模板中提前设置好的占位符,通过程序替换为想输出的内容即可;

新建word文件(必须为docx或者dotx文件),放在程序根目录下,在需要位置 插入-文档部件-域,

域名:MacroButton

  宏名:DoFieldClick

  显示文字:这个自己设置,为了与模板其他文字区分,可以用"[]"括起来.

  需要多少替换内容,添加多少域即可.

二:添加项目

在解决方案中添加项目WordMLHelper,在原项目中添加对WordMLHelper的引用后可以直接调用.

  WordMLHelper代码下载

三:调用方法

首先确定模板文件位置和导出文件的生成路径.

private string mubanFile = "muban.docx";

private string outputPath = @"C:\Users\zz\Desktop\test1.docx";

1.打开模板文件,获取所有填充域

2.遍历所有填充域,替换填充域内容

锁定填充域的话,有两种方法,一是根据填充域的提示文字,如"[文字]",二是根据填充域的索引,如if(tagInfos[i].Seq==2),则是找到索引为2的填充域

3.保存文件

四:完成

调用方法很简单,随着模板的修改,可以快速生成需要格式多样内容丰富的Word文档,感谢您的阅读与评论.

五:补充

引用WordMLHelper.dll。 

1.调用WordMLHelper的GetAllTagInfo方法(只接受后缀为.docx和.dotx的模板文件路径)获取word标准模板的填充域集合List; 

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: 添加填充内容并换行


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:winform前端框架设计(winform程序设计)
下一篇:C#实现图片暗通道去雾算法-Demo-提供代码实例下载地址(c反应蛋白高说明什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~