利用aspose在word中输出表格
序号 | 姓名 | 性别 |
<<TableStart:T>><<Index>> | <<Name>> | <<Sex>><<TableEnd:T>> |
数据源一般是System.Data.DataTable
有两种方式可以实现这个功能。
通过绑定。
在表格中设置域字段。需要注意的是,域的名称应与DataTable中的字段想对应。表的名称应与T一直。
这个和.net数据展现控件一致。比如,gridview,reapeter..
设置好模板与数据源后,只需一句话即可实现数据绑定。
1
|
doc.MailMerge.ExecuteWithRegions( "T" );
|
优点,代码少。设置好word模板后,提起数据源,进行绑定即可。
适用于简单正规的表格,复杂表格不适合这种方式。
需要注意:
如果表格外,存在同样一个名称的域字段,那使用下面的方法时会替换全部域字段。也就是说,不会区分该域字段是否独立的,还是包含在表格中的。
1
2
|
builder.MoveToMergeField( "n" );
builder.Write(value.ToString()); |
通过代码输出表格
方式一、
核心代码:
builder.InsertCell();/*插入一个单元格*/ builder.CellFormat.VerticalMerge = CellMerge.None;/*设置该单元格的合并性质*/ builder.EndRow();/*结束本行*/
输出单元格,设置单元格的合并方式。具体操作可以参考博客园另外一篇博文,点击。
出现过表格不自动合并的情形。
方式二、
如果单元格不需要合并,但行数不固定,推荐!
核心代码:
var dt1 = (Aspose.Words.Tables.Table)doc.GetChild(NodeType.Table, 1, true );
Row clonedRow = (Row)dt1.LastRow.Clone( true );
foreach
(Cell cell in
clonedRow.Cells) cell.RemoveAllChildren();
dt1.AppendChild(clonedRow); |
查找需要进行操作的表格,选定最后一行,作为模板,清除单元格的数据,以向该表格增加新行,将该行添加到表格中。
循环,可添加多行。
数据添加可以先通过builder.MoveToCell移动到指定单元格,再使用builder.Write在单元格中输出数据。
该操作过程和DataTable添加新行类似。
表格吻合很好。