# 操作 Word 文档 (DOCX) 

以下是用 aardio 调用 NPOI 创建包含页眉页脚和多页内容的 Word 文档。

```aardio
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();
```

## 代码说明

1. **文档创建**：使用 `XWPFDocument()` 创建新的 Word 文档对象。

2. **内容添加**：
   - 通过 `CreateParagraph()` 创建段落
   - 通过 `CreateRun()` 创建文本运行对象
   - 使用 `SetText()` 设置文本内容
   - 使用 `AddBreak(BreakType.PAGE)` 添加分页符

3. **页眉页脚**：
   - 通过 `CreateHeaderFooterPolicy()` 创建页眉页脚策略
   - 使用 `CreateHeader()` 和 `CreateFooter()` 分别创建页眉和页脚
   - 页脚中添加了自动页码功能（"PAGE" 和 "NUMPAGES" 字段）

4. **文件保存**：
   - 使用 `FileStream` 创建文件流
   - 通过 `Write()` 方法将文档写入文件流
   - 最后关闭文件流

注意在 aardio 中调用 .NET 对象时，需要完整的命名空间路径（如 `NPOI.XWPF.UserModel.XWPFDocument`），这与 C# 的 `using` 语句简化命名空间的方式不同。