C# Aspose.Word 操作word文档【二】

上一篇我们介绍了用书签的方式来填充word中数据,今天介绍第二种方法操作word!

依旧是先自己建好word模板,然后这里就不需要插入书签了。

1、建立模板


能看到红色标示的区域依旧用到了书签,没事我们全删掉,如下图:


2、分析下为什么不用书签了,因为我的数据是动态生成的,而且不止一条,有很多条,所以这时候书签就起不到作用了,当然你也可以放在一个书签里,但是内容都在一个书签单元格里,会很恐怖的,而且不符合客户需求。

3、编写代码:

            string tempFile = Path.GetFullPath("resource/templete/项目建议书模板.doc").ToString();
            Document doc = new Document(tempFile);
            DocumentBuilder builder = new DocumentBuilder(doc);
            NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true); //获取word中所有表格table

            Aspose.Words.Tables.Table table1 = allTables[0] as Aspose.Words.Tables.Table;//拿到第1个表格
            var roww1 = table1.Rows[14]; //获取第14行
            for (int i = 0; i < dt2.Rows.Count - 1; i++)    //dt2为数据源  datatable
            {
                var row1 = roww1.Clone(true);//复制第14行
                table1.Rows.Insert(14 + i, row1);//将复制的行插入当前行的上方


                builder.MoveToCell(0, 14 + i, 1, 0); //移动到第一个表格的第十四行第一个格子
                builder.Write(dt2.Rows[i]["MingCheng"].ToString()); //单元格填充文字


                builder.MoveToCell(0, 14 + i, 2, 0); //移动到第一个表格的第十四行第二个格子
                builder.Write(dt2.Rows[i]["GuiGeXingHao"].ToString()); //单元格填充文字


                builder.MoveToCell(0, 14 + i, 3, 0); //移动到第一个表格的第十四行第三个格子
                builder.Write(dt2.Rows[i]["DanWei"].ToString()); //单元格填充文字


                builder.MoveToCell(0, 14 + i, 4, 0); //移动到第一个表格的第十四行第四个格子
                builder.Write(dt2.Rows[i]["ShuLiang"].ToString()); //单元格填充文字                       


            }
            table1.Rows.RemoveAt(14 + dt2.Rows.Count - 1); //移除多余的空行

            doc.Save(tempFile);
            

4、效果图:


注意:下一篇介绍aspose.word操作table 的第三种方法 !

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值