C# 導出word文檔及批量導出word文檔(1),
這裡用到了兩個dll,一個是aspose.word.dll,另外一個是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用於批量導出word文檔的,通過把文件打包成壓縮包,以文件流的方式輸出下載。aspose.word.dll最好使用最新版的,14.5或者更高,我使用的是14.5版本,頁面是采用mvc的語法。在這裡感謝趙某人為我提供的幫助。 首先制作好word模板,使用模板可以避免在代碼中對word進行排版,方便簡單。書簽和文本域的方法分別說明。
(1)書簽
打開word文檔,選擇“插入” →“書簽”,在打開的對話框中輸入要添加的書簽名,書簽名可以隨意定義,不過最好是數據表一致,這樣在代 碼裡就減少了判斷,然後點擊添加,算完成了。書簽是看不見的,就隱藏的,但它確確實實存在著,書簽的局限性在於:一個word文檔裡只有一個書簽,不能同名,且若獲取列表時,書簽只能在文檔的開頭,前面不能插有其它的書簽或域,而文本域則不限,但是如果是二維域的話,文檔裡有相同的兩個字段的話,會導致後面的值會被前面的覆蓋,比如有兩個starttime的二維域,第二個starttime的值為變成第一個的starttime的值,而不是其真正數據表裡的值。循環的列表則不會出現這樣的情況。所以我用的都是文本域,相關設置如下圖:
(2)文本域
打開word文檔,將光標放在插入點,選擇“插入” →“文檔部件”→“域”,在打開的對話框中,選擇“郵件合並”→“MergeField”,輸入要添加的名稱,名稱可以隨意定義,不過最好是數據表一致,這樣在代碼裡就減少了判斷,然後點擊確定,算完成了。這裡特別要注意的是,定義圖片的域的方式,要加Image:,如下圖:
以上的書簽和域是獲取單條記錄的,如果是多條記錄的話,則需要循環列表並填充數據,相關設置如下:
- 書簽列表,上面的編號,姓名,時間也要插入書簽,table是到時循環出來的列表插入的位置:
-
域,主要是注意tablestart和tableend,標題不用插入域,只需在下一行定義好域即可: