先看效果
有客戶數據,放個縮小圖,可以看到裏面包含若干個不同客戶/供應商的對賬單,每個對賬單分頁
模板設置
合併操作
關係設置
dataset.Relations.Add(dataset.Tables[0].Columns["cCusCode"], dataset.Tables[1].Columns["cCusCode"]);
合併
//載入模板
var doc = new Document(Program.receivableTemplate);
//合併模版,相當於頁面的渲染
doc.MailMerge.ExecuteWithRegions(dataset);
保存
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);
}
}
要點
- 兩個TableStart/TableEnd嵌套,要求Aspose.Words版本是8以上,不然會出錯。
- 分頁的問題,主表的TableEnd要在分頁符後面。並且主表的TableEnd後面的內容會被清除,合併後就沒有了,TableStart前面的內容也會被清除(沒試)。