iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 26
1
Modern Web

打net core肉飯系列 第 26

[2020鐵人賽] Day26 - 用DocX匯出Word檔案

今天來講一下user的需求,要匯出一份word檔,並且需要套上參數並替換值,其實nuget上有很多套件可以支援這種文書工作,像是Open XML,這邊介紹一款值絕不拖泥帶水的DocX。

首先至Nuget上下載dll,就可以直接使用
https://ithelp.ithome.com.tw/upload/images/20201011/20111766T4gyaTIWBw.png

但引用時需要.Net Framework 4.0以上的環境,若版本不到就去使用Open XML之類的。

接著我們需要載入Docx檔案,顧名思義就是.docx的格式

Example1
需要範本檔

using (DocX doc = DocX.Load("c:\source.docx")) //取得範本檔
{
    //取代文字
    doc.ReplaceText("$TEST$", "123");
    // 將取代完成的文件內容儲存成 Word 文件
    doc.SaveAs("C:\test.docx");
}

Example2
同時也支援Stream

using (DocX doc = DocX.Load(Stream))
{
    //取代文字
    doc.ReplaceText("$TEST$", "123");
    // 將取代完成的文件內容儲存成 Word 文件
    doc.SaveAs("C:\test.docx");
}

example3
產生表格

    using (DocX doc = DocX.Load(Stream))
    {
      //定義1列2行的table
      var tb = doc.AddTable(1,2);
      tb.Design = TableDesign.ColorfulListAccent1;//套上的表格格式
      tb.Alignment = Alignment.center;//至中格式
      tb.Rows[0].Cells[0].Paragraphs[0].Append("Test");
      tb.Rows[0].Cells[1].Paragraphs[0].Append("99");
      var row = tb.InsertRow();//新增列
      row.Cells[0].Paragraphs[0].Append("Scott");
      var pa = document.InsertParagraph("插入一個新段落");
      pa.InsertTableAfterSelf(tb);
      document.Save();
    }

簡單就可以替換文字並且匯出,而且也有支援表格匯出,文字的內容(字型、顏色)都可以調整,相當容易上手,推薦給大家。

參考資料:
https://github.com/xceedsoftware/DocX
https://doc.xceed.com/xceed-document-libraries-for-net/Xceed.Document.NET~Xceed.Document.NET.TableDesign.html


上一篇
[2020鐵人賽] Day25 - Razor Page(3/3)
下一篇
[2020鐵人賽] Day27 - 部署與相關設定
系列文
打net core肉飯30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言