Aspose.Words导出主从表格

先看效果

有客户数据,放个缩小图,可以看到里面包含若干个不同客户/供应商的对账单,每个对账单分页


模板设置

主要就是两个TableStart和TableEnd嵌套使用:

合并操作

关系设置

因为是主丛表,所以要设置两个表之间的关系,例如像下面这样设置:
dataset.Relations.Add(dataset.Tables[0].Columns["cCusCode"], dataset.Tables[1].Columns["cCusCode"]);

合并

Aspose.Words真是个良心作品,使用起来很简单,获取数据源之后用很少的代码就能完成。
            //载入模板
            var doc = new Document(Program.receivableTemplate);
            //合并模版,相当于页面的渲染
            doc.MailMerge.ExecuteWithRegions(dataset);

保存

winform的,保存到磁盘:
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.Filter = "Word97-2003文件(*.doc)|*.doc|Word文件2007版(*.docx)|*.docx";
            dialog.RestoreDirectory = true;
            //点了保存按钮进入 
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string localFilePath = dialog.FileName.ToString(); //获得文件路径 
                string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1); //获取文件名,不带路径
                doc.Save(localFilePath);
                if (MessageBox.Show("文件已经保存到:" + localFilePath + "\n\n是否查看?", "保存成功", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    System.Diagnostics.Process.Start(localFilePath);
                }
            }

要点

  1. 两个TableStart/TableEnd嵌套,要求Aspose.Words版本是8以上,不然会出错。
  2. 分页的问题,主表的TableEnd要在分页符后面。并且主表的TableEnd后面的内容会被清除,合并后就没有了,TableStart前面的内容也会被清除(没试)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章