.NET使用NPOI讀取Word模板并替換關鍵字并下載

NPOI 是 POI?項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。

使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文檔進行讀寫

NPOI下載地址:http://npoi.codeplex.com/

以下代碼僅供參考,請根據實際需求進行修改。

        public MemoryStream Export(){string filepath = Server.MapPath("/word/xmxx.docx");using (FileStream stream = File.OpenRead(filepath)){XWPFDocument doc = new XWPFDocument(stream);//遍歷段落foreach (var para in doc.Paragraphs){ReplaceKey(para);}//遍歷表格var tables = doc.Tables;foreach (var table in tables){foreach (var row in table.Rows){foreach (var cell in row.GetTableCells()){foreach (var para in cell.Paragraphs){ReplaceKey(para);}}}}using (MemoryStream ms = new MemoryStream()){doc.Write(ms);return ms;}}}private void ReplaceKey(XWPFParagraph para){BLL.XmxxBLL XmxxBLL = new BLL.XmxxBLL();Model.Xmxx model = new Model.Xmxx();model = XmxxBLL.GetModel(20);string text = para.ParagraphText;var runs = para.Runs;string styleid = para.Style;for (int i = 0; i < runs.Count; i++){var run = runs[i];text = run.ToString();Type t = model.GetType();PropertyInfo[] pi = t.GetProperties();foreach (PropertyInfo p in pi){if (text.Contains("{$xmxx." + p.Name + "}")){text = text.Replace("{$xmxx." + p.Name + "}", TM.Common.StringHelper.ToString(p.GetValue(model, null)));}}runs[i].SetText(text, 0);}}protected void Button1_Click(object sender, EventArgs e){using (MemoryStream ms = Export()){Response.ContentType = "application/vnd.ms-word";Response.ContentEncoding = Encoding.UTF8;Response.Charset = "";Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("123.doc", Encoding.UTF8));Response.BinaryWrite(Export().GetBuffer());Response.End();}}

?

轉載于:https://www.cnblogs.com/tangxueyang/p/4741430.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375625.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375625.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中間件、MetaQ入門學習

目錄 1. 中間件技術 2. MetaQ中間件 3. MetaQ編程實踐 1. 中間件技術 0x1: 中間件簡介 中間件(Middleware)是提供系統軟件和應用軟件之間連接的軟件&#xff0c;以便于軟件各部件之間的溝通&#xff0c;特別是應用軟件對于系統軟件的集中的邏輯&#xff0c;在現代信息技術應用框…

MyBatis 入門到精通(二) SQL語句映射XML文件

MyBatis 真正強大之處就在這些映射語句&#xff0c;也就是它的魔力所在。對于它的強大功能&#xff0c;SQL 映射文件的配置卻非常簡單。 如果您比較SQL 映射文件配置與JDBC 代碼&#xff0c;您很快可以發現&#xff0c;使用SQL 映射文件配置可以節省95%的代碼量。MyBatis 被創建…

Monitoring the process execution and memory consumption in its lifetime

<?xml version"1.0" encoding"utf-8"?> Monitoring the process execution and memory consumption in its lifetimeMonitoring the process execution and memory consumption in its lifetime Recently, I am working on a research project whi…

設置和清除LD_LIBRARY_PATH

"" 設置 export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/the/path/you/want/setexport LD_LIBRARY_PATH/the/path/you/want/set "" 查看設置 echo $LD_LIBRARY_PATH "" 清除 unset LD_LIBRARY_PATH

Jenkins中切換devtoolset

source /opt/rh/devtoolset-4/enable or source scl_source enable devtoolset-4

告訴一個遠程團隊協作的故事

Lisette Sutherland和Elinor Slomba在一起收集一些人的故事&#xff0c;這些人的業務模式須要依靠遠程團隊正確完畢工作。故事中體現出遠程團隊怎樣協作。怎樣跨越距離的障礙&#xff0c;怎樣建立信任&#xff0c;怎樣完畢任務。即將出版的《高能協作&#xff1a;遠程戰地指南》…

混沌數學之呂陳吸引子

呂陳吸引子&#xff08;Lu Chen attractor&#xff09;也稱Lu attractor 吸引子是2002年中國科學院數學與系統科學研究院研究員 呂金虎&#xff08;Jinhu Lu)&#xff0c;Suchun Zhang 和香港城市大學電子工程系講座教授陳關榮&#xff08; Guangrong Chen &#xff09;發現和分…

整數反轉

給出一個 32 位的有符號整數&#xff0c;你需要將這個整數中每位上的數字進行反轉。 示例 1: 輸入: 123 輸出: 321示例 2: 輸入: -123 輸出: -321示例 3: 輸入: 120 輸出: 21注意: 假設我們的環境只能存儲得下 32 位的有符號整數&#xff0c;則其數值范圍為 [?231, 231 ?…

C# char[]與string之間的相互轉換

string 兌換 Char[] string ss "abcdefg";char[] cc ss.ToCharArray();Char[] 轉換成string string s new string(cc);byte[] 與 string 之間的轉換 byte[] bb Encoding.UTF8.GetBytes(ss);string s Encoding.UTF8.GetString(bb);string[] 轉換成string string …

java 直接 訪問WebSphere JNDI

代碼如下: Hashtable<String, String> env new Hashtable<String, String>();env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");env.put(Context.PROVIDER_URL, "iiop://localhost:2809");Co…

Standard C++ Episode 7

六、C的I/O流庫 C&#xff1a;fopen/fclose/fread/fwrite/fprintf/fscanf/fseek/ftell... C&#xff1a;對基本的I/O操作做了類的封裝&#xff0c;其功能沒有任何差別&#xff0c;用法和C的I/O流也非常近似。 七、格式化I/O <</>> 1 /*2 *格式化I/O練習3 */4 #in…

在Android設備與Mac電腦之間傳輸文件

不同于Windows和Linux&#xff0c;Android設備連接到Mac電腦上是看不見掛載的目錄的&#xff0c;既然看不到了Android設備的掛載目錄&#xff0c;如何在Android設備與Mac電腦之間傳輸文件呢&#xff1f; 原來Android官方提供了傳輸文件的工具&#xff01;訪問www.android.com/f…

mysql語句在node.js中的寫法

總結一下mysql語句在node.js中的各種寫法&#xff0c;參考了npm網站mysql模塊給的實例。 查詢 select //1 db.query(select * from tuanshang_users where user_id < 10,function(err,results,fields){//if(err) throw err;console.log( results );if(!!results.length){con…

jqPlot圖表插件學習之折線圖-散點圖-series屬性

一、準備工作 首先我們需要到官網下載所需的文件&#xff1a; 官網下載&#xff08;筆者選擇的是jquery.jqplot.1.0.8r1250.zip這個版本&#xff09; 然后讀者需要根據自己的情況新建一個項目并且按照如下的方式加載對應的js和css&#xff08;因為筆者在VS2012環境下新建的&…

node.js基礎:數據存儲

無服務器的數據存儲 內存存儲 var http require(http); var count 0; //服務器訪問次數存儲在內存中 http.createServer(function(req,res){res.write(hello count);res.end(); }).listen(3000);    基于文件的存儲 node.js中主要用fs文件系統模塊來管理文件的存儲。 文件…

CUDA 6.5 VS2013 Win7:創建CUDA項目

運行環境&#xff1a; Win7VS2013CUDA6.5 1.創建win32空項目 2.右鍵項目解決方案-->生成項目依賴項-->生成自定義 3.右鍵項目解決方案-->屬性-->配置屬性-->常規-->平臺工具集 配置屬性-->VC目錄-->包含目錄&#xff0c;添加 $(CUDA_INC_PATH) 連接器-…

c/c++編碼規范(2)--作用域

2. 作用域 靜止使用class類型的靜態或全局變量。 6. 命名約定 6.1. 函數名&#xff0c;變量名&#xff0c;文件名要有描述性&#xff0c;少用縮寫。 6.2. 文件命名 6.2.1. 文件名要全部用小寫。可使用“_”或"-"&#xff0c;遵從項目規范&#xff0c;沒有規范&#x…

subversion svnserver服務啟動與配置

svnserve 是一個輕量級的服務&#xff0c; 使用自定義的協議通過TCP/IP與客戶端通訊。 客戶端通過由 svn:// 或者 svnssh:// 開始的URL訪問svnserve服務器。 啟動服務器 端口監控&#xff08;inetd&#xff09;模式 如果你打算用端口監控來啟動處理客戶的訪問請求的進程&#x…

mongodb地理空間索引原理閱讀摘要

http://www.cnblogs.com/taoweiji/p/3710495.html 具體原理在上面 簡單概述&#xff0c;&#xff08;x,y&#xff09;經緯度坐標&#xff0c;通過geohash的方式&#xff0c;通過N次方塊四分割生成一個坐標碼&#xff0c;然后用坐標碼進行BTREE的索引建立轉載于:https://www.cnb…

angular 頁面加載時可以調用 函數處理

轉載于 作者:海底蒼鷹地址:http://blog.51yip.com/jsjquery/1599.html 我希望頁面加載的時候&#xff0c;我能馬上處理頁面的數據&#xff0c;如請求API .... 所以這樣設置 在某個頁面的控制器中 監聽頁面load phonecatControllers.controller(registerctr, [$scope, $routePa…