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前面的內容也會被清除(沒試)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章