使用NPOI按照word模板檔案生成新的word檔案
阿新 • • 發佈:2019-01-09
/// <summary> /// 按照word模板檔案 生成新word檔案 /// </summary> /// <param name="tempFile">模板檔案路徑</param> /// <param name="saveFile">生成檔案路徑</param> /// <param name="billRegister">議案登記</param> public void CreateFileByTemplate(string tempFile,string saveFile, L1BillRegister billRegister) { using (FileStream stream = File.OpenRead(tempFile)) { XWPFDocument doc = new XWPFDocument(stream); //遍歷段落 foreach (var para in doc.Paragraphs) { ReplaceKey(para, billRegister); } //遍歷表格 foreach (var table in doc.Tables) { foreach (var row in table.Rows) { foreach (var cell in row.GetTableCells()) { foreach (var para in cell.Paragraphs) { ReplaceKey(para, billRegister); } } } } FileStream out1 = new FileStream(saveFile, FileMode.Create); doc.Write(out1); out1.Close(); } } /// <summary> /// 對模板中的值進行替換 /// </summary> /// <param name="para">word文件物件</param> /// <param name="billRegister">議案登記物件</param> private static void ReplaceKey(XWPFParagraph para, L1BillRegister billRegister) { string text = ""; foreach (var run in para.Runs) { text = run.ToString(); if (text.Contains("a")) { run.SetText(billRegister.BillName, 0); } else { run.SetText(text, 0); } } } //呼叫 string tempFile = System.Web.HttpContext.Current.Server.MapPath("~/weboffice/tempfiles/meetSolutions.docx"); string saveFile = System.Web.HttpContext.Current.Server.MapPath("~/weboffice/tempfiles/test/" + billRegister.BillId + ".doc"); this.CreateFileByTemplate(tempFile,saveFile, billRegister);