NPOI 替换word模版

本文提供了一个使用C#编程语言操作Word文档的具体示例,包括读取文档、遍历段落及表格并替换文本内容的过程。示例中通过XWPFDocument类实现了对.docx格式文件的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            string fileName = @"C:\Users\Admin\Desktop\322.docx";
            XWPFDocument document = null;
            try
            {
                using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                {
                    document = new XWPFDocument(file);
                }

                using (FileStream stream = File.OpenRead(fileName))
                {
                    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);
                        using (FileStream fsWrite = new FileStream(@"D:\1.txt", FileMode.Append))
                        {
                            fsWrite.Write(ms.ToArray(), 0, ms.ToArray().Length);
                        };
                    }

                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(string.Format("文件{0}打开失败,错误:{1}", new string[] { fileName, ex.ToString() }));
            }
        }

        private void ReplaceKey(XWPFParagraph para)
        {

            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();
                runs[i].SetText(text+2, 0);
            }
        }

 

转载于:https://www.cnblogs.com/nocanstillbb/p/9078872.html

使用NPOI替换Word模板中的字段并导出可以分为以下几个步骤: 1. 引入NPOI库 首先,在项目中引入NPOI库。可以通过NuGet包管理器或手动下载DLL文件的方式引入。 2. 创建Word模板 创建一个Word模板,其中需要用到的字段用“占位符”表示,如“{{Name}}”、“{{Age}}”等等。 3. 加载Word模板 使用NPOI库打开Word模板。 ```csharp FileStream fs = new FileStream("模板.docx", FileMode.Open, FileAccess.ReadWrite); XWPFDocument doc = new XWPFDocument(fs); ``` 4. 替换模板中的字段 使用NPOI库中的`XWPFParagraph`类和`XWPFRun`类,遍历Word模板中的所有段落和文本,查找需要替换的字段,并进行替换。 ```csharp foreach (var para in doc.Paragraphs) { var text = para.Text; if (text.Contains("{{Name}}")) { text = text.Replace("{{Name}}", "张三"); para.ReplaceText("{{Name}}", "张三"); } if (text.Contains("{{Age}}")) { text = text.Replace("{{Age}}", "18"); para.ReplaceText("{{Age}}", "18"); } } ``` 5. 导出Word文档 使用NPOI库中的`XWPFDocument`类中的`Write`方法导出Word文档。 ```csharp using (FileStream fs = new FileStream("导出.docx", FileMode.Create, FileAccess.Write)) { doc.Write(fs); } ``` 完整示例代码如下: ```csharp using System.IO; using NPOI.XWPF.UserModel; namespace ConsoleApp { class Program { static void Main(string[] args) { //加载Word模板 FileStream fs = new FileStream("模板.docx", FileMode.Open, FileAccess.ReadWrite); XWPFDocument doc = new XWPFDocument(fs); //替换模板中的字段 foreach (var para in doc.Paragraphs) { var text = para.Text; if (text.Contains("{{Name}}")) { text = text.Replace("{{Name}}", "张三"); para.ReplaceText("{{Name}}", "张三"); } if (text.Contains("{{Age}}")) { text = text.Replace("{{Age}}", "18"); para.ReplaceText("{{Age}}", "18"); } } //导出Word文档 using (FileStream fs = new FileStream("导出.docx", FileMode.Create, FileAccess.Write)) { doc.Write(fs); } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值