.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.mzph.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…