# Word 表格布局

以下示例演示如何在 aardio 中使用 NPOI 库创建包含表格的 Word 文档（.docx 格式）。

```aardio
import NPOI.XWPF.UserModel;
import NPOI.OpenXmlFormats.Wordprocessing;
import System.IO;

// 创建新的 Word 文档对象
var doc = NPOI.XWPF.UserModel.XWPFDocument();

// 创建一个 3 行 3 列的表格
var table1 = doc.CreateTable(3, 3);

// 设置表格布局为固定宽度
var tblLayout1 = table1.GetCTTbl().tblPr.AddNewTblLayout();
tblLayout1.type = NPOI.OpenXmlFormats.Wordprocessing.ST_TblLayoutType.@fixed;

// 设置每列宽度为 1200 twips (1 twip = 1/20 点)
table1.SetColumnWidth(0, 1200);
table1.SetColumnWidth(1, 1200);
table1.SetColumnWidth(2, 1200);

// 填充表格内容
for(i=0;3){
    for(j=0;3){
        // 获取单元格段落
        var para = table1.GetRow(i).GetCell(j).GetParagraphArray(0);
        
        // 在段落中添加文本
        para.CreateRun().SetText("这是一个测试");
    }
}

// 将文档保存到文件
var fs = System.IO.FileStream("sample.docx", "Create");
doc.Write(fs);
fs.Close();
```

## 代码说明

1. **创建文档**：
   - 使用 `XWPFDocument()` 构造函数创建新的 Word 文档对象

2. **创建表格**：
   - `CreateTable(行数, 列数)` 方法创建指定大小的表格
   - 表格布局设置为固定宽度模式 (`ST_TblLayoutType.@fixed`)

3. **设置列宽**：
   - 使用 `SetColumnWidth(列索引, 宽度)` 方法设置列宽
   - 宽度单位为 twips (1 twip = 1/1440 英寸)

4. **填充内容**：
   - 通过双重循环遍历表格所有单元格
   - 每个单元格默认包含一个段落，通过 `GetParagraphArray(0)` 获取
   - 使用 `CreateRun().SetText()` 在段落中添加文本

5. **保存文档**：
   - 创建文件流对象 (`FileStream`)
   - 调用文档的 `Write()` 方法将内容写入文件流
   - 最后关闭文件流

注意：在 aardio 中调用 .NET 方法时，不需要像 C# 那样使用 `using` 语句块，但需要显式调用 `Close()` 方法关闭资源。