以下是用 aardio 调用 NPOI 创建包含页眉页脚和多页内容的 Word 文档。
import NPOI.XWPF.UserModel;
import System.IO;
// 创建新的 Word 文档对象
var doc = NPOI.XWPF.UserModel.XWPFDocument();
// 设置正文内容
var paragraph = doc.CreateParagraph();
var run = paragraph.CreateRun();
run.SetText("正文内容:");
// 添加第一页内容
paragraph = doc.CreateParagraph();
run = paragraph.CreateRun();
run.SetText("这里是第一页的示例文本...");
// 添加分页符和第二页内容
paragraph = doc.CreateParagraph();
run = paragraph.CreateRun();
run.AddBreak(NPOI.XWPF.UserModel.BreakType.PAGE); // 添加分页符
run.SetText("这里是第二页的示例文本...");
// 添加分页符和第三页内容
paragraph = doc.CreateParagraph();
run = paragraph.CreateRun();
run.AddBreak(NPOI.XWPF.UserModel.BreakType.PAGE); // 添加分页符
run.SetText("这里是第三页的示例文本...");
// 获取或创建页眉页脚策略
var headerFooterPolicy = doc.GetHeaderFooterPolicy();
if (!headerFooterPolicy) {
headerFooterPolicy = doc.CreateHeaderFooterPolicy();
}
// 创建页眉
var header = headerFooterPolicy.CreateHeader(NPOI.XWPF.Model.XWPFHeaderFooterPolicy.DEFAULT);
paragraph = header.GetParagraphArray(0);
if (!paragraph) paragraph = header.CreateParagraph();
paragraph.Alignment = NPOI.XWPF.UserModel.ParagraphAlignment.LEFT; // 左对齐
run = paragraph.CreateRun();
run.SetText("页眉内容:");
// 创建页脚
var footer = headerFooterPolicy.CreateFooter(NPOI.XWPF.Model.XWPFHeaderFooterPolicy.DEFAULT);
paragraph = footer.GetParagraphArray(0);
if (!paragraph) paragraph = footer.CreateParagraph();
paragraph.Alignment = NPOI.XWPF.UserModel.ParagraphAlignment.CENTER; // 居中对齐
// 添加页码信息
run = paragraph.CreateRun();
run.SetText("第 ");
paragraph.GetCTP().AddNewFldSimple().instr = "PAGE \\* MERGEFORMAT"; // 当前页码
run = paragraph.CreateRun();
run.SetText(" 页/共 ");
paragraph.GetCTP().AddNewFldSimple().instr = "NUMPAGES \\* MERGEFORMAT"; // 总页数
run = paragraph.CreateRun();
run.SetText(" 页");
// 保存文档到文件
var fs = System.IO.FileStream("示例文档.docx", System.IO.FileMode.Create);
doc.Write(fs);
fs.Close();
文档创建:使用 XWPFDocument() 创建新的 Word 文档对象。
内容添加:
CreateParagraph() 创建段落CreateRun() 创建文本运行对象SetText() 设置文本内容AddBreak(BreakType.PAGE) 添加分页符页眉页脚:
CreateHeaderFooterPolicy() 创建页眉页脚策略CreateHeader() 和 CreateFooter() 分别创建页眉和页脚文件保存:
FileStream 创建文件流Write() 方法将文档写入文件流注意在 aardio 中调用 .NET 对象时,需要完整的命名空间路径(如 NPOI.XWPF.UserModel.XWPFDocument),这与 C# 的 using 语句简化命名空间的方式不同。