[ASP .NET]使用Open XML SDK修改Word(.docx)內容
在前一篇套版產出的多人文件,因為最後一夜會多一個分頁符號,而TemplateEngine.Docx似乎沒有提供修改內容的方式
於是用Open XML SDK來直接修改
參考黑暗執行緒大大對docx的xml說明,先抓出產出的檔案中的分頁符號,看起來抓關鍵字type="page"應該沒錯
用 Document.Body.Descendants() 取回所有 XML 節點再移除關鍵字的內容即可:
using (WordprocessingDocument doc = WordprocessingDocument.Open(targetPath, true))
{
Document mainPart = doc.MainDocumentPart.Document;
mainPart.Body.Descendants().Where(x => x.LocalName == "p" && x.InnerXml.Contains("w:type=\"page\"")).Last().Remove();
}
參考資料
https://blog.darkthread.net/blog/insert-image-to-docx/
題外話:
在使用Open XML SDK前也曾在NuGet上尋找可以直接改Word內容的套件,試用了DocX_Doc及Xceed.DocX
兩個都可以正確移除分頁,但DocX_Doc免費版一次只能處理最多5頁的docx檔,實務上常常會超過5頁,故放棄,
而Xceed.DocX需要.Net Framework 4.0以上的環境,如果想用.Net Core在Linux環境下使用的話就不能用了,
所以最後還是直接研究Open XML SDK處理。