.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();
            }
        }
时间: 2024-08-28 23:26:15

.NET使用NPOI读取Word模板并替换关键字并下载的相关文章

C#读取Word模板替换相应的字符串(标签)生成新的Word

在平常工作中,生成word的方式主要是C#读取html的模板文件处理之后保存为.doc文件,这样的好处是方便,快捷,能满足大部分的需求.不过有些特殊的需求并不能满足,如要生成的Word为一个表格,只是一部分字符串需要变化,用上面的方法生成Word表格容易变形.如果我们能读取一个word模板,把模板里定义的固定字符串如{标记1}替换为想要的文字,然后生成新的word.这样生成的Word非常整洁. 查找了网上许多方法,虽然都是调用office的接口,并没有一个好的方案.通过自己的实验,比较,使用Mi

c#读取Word模板,利用书签替换内容包括表格

//生成WORD程序对象和WORD文档对象 Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document doc = new Document(); object miss = System.Reflection.Missing.Value; try { //打开模板文档,并指定d

.net MVC使用NPOI读取Excel模板,再写入数据

NPOI其实已经介绍的差不多了,再贴一个方便以后复制粘贴. 亮点其实是 Server.MapPath 这个东西,可以找到MVC工程下的文件夹,找路径还是很方便的. /// <summary> /// 设备导出Excel表格 /// </summary> public FileResult ExportExcel() { string fileDir = Server.MapPath("~/ReportTemplate/我的模板.xls"); FileStream

poi导出word模板项目实例(一个文件)

在页面上填写值,然后导出到word模板中,并把页面上的值带到模板中,也就是导出word文档,提前有word 的模板形式, 1.jsp 页面   <table class="formTable"> <TR> <TD class="label">会议地点</TD> <TD class="content"> <INPUT id="meetingSite" type=&

使用java Apache poi 根据word模板生成word报表

项目开发过程中,客户提出一堆导出报表的需求,需要导出word格式,页眉还需要加上客户公司的logo,试了几种方案,最后选择了用 Apache poi 加上自定义标签的方式实现. 目前功能还比较简单,一些复杂的表格做不了,但是已经基本满足项目需求了. 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https://download.csdn.net/download/u012775558/10306308 注意,仅支持docx

c#操作Excel模板,替换命名单元格或关键字形成报表

http://blog.sina.com.cn/s/blog_45eaa01a0102vqma.html一 建立Excel 模板文件 template.xls 1.1 插入命名单元格的方法: 左上角名称框,显示当前单元格的行列号C2,加入命名后会显示其命名name 方法一: (1) 点击 单元格“姓名”之后的单元格(2) 菜单 插入--名称--定义(3) 在框中输入 name 确保底部的引用位置为 =Users!$C$2   按“添加”.“确定”按钮 即可 方法二:(1) 点击 单元格“姓名”之

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pd

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.ziph

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支