zoukankan      html  css  js  c++  java
  • 使用NPOI按照word模板文件生成新的word文件

           	/// <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);
    

      

  • 相关阅读:
    10.19NOIP模拟赛(DAY2)
    bzoj1880: [Sdoi2009]Elaxia的路线(spfa,拓扑排序最长路)
    P3469 [POI2008]BLO-Blockade(Tarjan 割点)
    P2746 [USACO5.3]校园网Network of Schools(Tarjan)
    10.17NOIP模拟赛
    10.16NOIP模拟赛
    P3953 逛公园(dp,最短路)
    牛客OI周赛2-提高组
    洛谷 P1948 [USACO08JAN]电话线Telephone Lines 题解
    洛谷 P2563 [AHOI2001]质数和分解 题解
  • 原文地址:https://www.cnblogs.com/YYkun/p/10242624.html
Copyright © 2011-2022 走看看