给我一个 C# Npoi 2.5.6版本 根据书签模板导出word的帮助类
时间: 2024-02-13 10:07:02 浏览: 30
以下是一个基于 NPOI 2.5.6 版本,根据书签模板导出 Word 的 C# 帮助类:
```csharp
using System.Collections.Generic;
using System.IO;
using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.XWPF.UserModel;
namespace WordExportDemo
{
public class WordExportHelper
{
public static void ExportWord(string templatePath, string outputPath, Dictionary<string, string> bookmarkValues)
{
using (FileStream fs = new FileStream(templatePath, FileMode.Open, FileAccess.Read))
{
XWPFDocument doc = new XWPFDocument(fs);
foreach (XWPFParagraph p in doc.Paragraphs)
{
ReplaceBookmarkValues(p, bookmarkValues);
}
foreach (XWPFTable t in doc.Tables)
{
foreach (XWPFTableRow r in t.Rows)
{
foreach (XWPFTableCell c in r.GetTableCells())
{
foreach (XWPFParagraph p in c.Paragraphs)
{
ReplaceBookmarkValues(p, bookmarkValues);
}
}
}
}
using (FileStream output = new FileStream(outputPath, FileMode.Create, FileAccess.Write))
{
doc.Write(output);
}
}
}
private static void ReplaceBookmarkValues(XWPFParagraph p, Dictionary<string, string> bookmarkValues)
{
List<CTBookmark> bookmarks = p.GetCTP().GetBookmarkStartList();
foreach (CTBookmark bookmark in bookmarks)
{
if (bookmarkValues.ContainsKey(bookmark.name))
{
XWPFRun run = new XWPFRun(p.GetCTP().AddNewR(), p);
run.SetText(bookmarkValues[bookmark.name]);
p.GetCTP().GetBookmarkEndList().Add(bookmark);
}
}
}
}
}
```
使用方法:
```csharp
Dictionary<string, string> bookmarkValues = new Dictionary<string, string>();
bookmarkValues.Add("Name", "John Doe");
bookmarkValues.Add("Age", "25");
bookmarkValues.Add("Gender", "Male");
WordExportHelper.ExportWord("Template.docx", "Output.docx", bookmarkValues);
```
其中,`Template.docx` 是包含书签的 Word 模板文件,`Output.docx` 是生成的 Word 文件,`bookmarkValues` 是一个包含书签名称和对应值的字典。