# DocumentFormat.OpenXml

Microsoft Open XML SDK 的 aardio 薄接入，用于直接读写 DOCX / XLSX / PPTX，以及测试生成文档的结构。主要供 AI 使用：智能提示只保留常用入口，不复制 SDK 类型目录，也不提供另一套 Office 对象模型。

## 按需阅读

- [结构验证](validation.html)：选择格式版本、提取错误位置、区分执行失败与结构不合法。
- [调用示例](examples.html)：内存 DOCX 往返、工作表关系、幻灯片顺序。
- [.NET 互操作](interop.html)：泛型、集合、流、运行时与上游资料。

## 只读提取 Word 正文

将 `/example.docx` 换为输入文件。单个 `/` 开头的路径相对于当前应用程序基准目录。

```aardio
import DocumentFormat.OpenXml;
var ox = DocumentFormat.OpenXml;

var doc = ox.Packaging.WordprocessingDocument.Open("/example.docx");
var text = doc.MainDocumentPart.Document.Body.InnerText;
doc.Dispose();

return text;
```

`InnerText` 是拼接文本，不保留段落分隔或排版；此处只读主文档正文，不包含页眉、页脚等独立部件。打开失败会抛出异常；若要统一返回错误并覆盖整个处理过程，采用[验证示例](validation.html)的资源收尾方式。

## 六个适配入口

下列类均位于 `DocumentFormat.OpenXml.Packaging`：

| 文档类 | 主部件 | `Create` 默认文档类型 |
| --- | --- | --- |
| `WordprocessingDocument` | `MainDocumentPart` | `WordprocessingDocumentType.Document`（0） |
| `SpreadsheetDocument` | `WorkbookPart` | `SpreadsheetDocumentType.Workbook`（0） |
| `PresentationDocument` | `PresentationPart` | `PresentationDocumentType.Presentation`（0） |

- `Open(pathOrStream, editable, openSettings)`：`editable` 默认 `false`；第三参为可选的原生 `OpenSettings` 对象。
- `Create(pathOrStream, documentType, autoSave)`：文档类型默认 0，`autoSave` 默认 `true`。只创建包，不替你建立完整的正文或工作表。**已有文件会被覆盖**，父目录需事先存在。
- 字符串路径自动经 `io.fullpath` 转为完整路径；`.NET Stream` 对象透传。这里不是接收文件字节串的接口。
- 返回原生 SDK 对象，用完调用 `Dispose()`。调用方创建的流另行释放。原生异常不改写为统一的 `null, err` 返回值。
- 其余方法、属性、枚举与类型直接使用 SDK；没有提示不表示不可调用。

## 依赖与范围

随库内嵌 SDK **3.5.1 / net35** 的 `DocumentFormat.OpenXml.dll` 与 `DocumentFormat.OpenXml.Framework.dll`，通过 `dotNet` 加载 .NET Framework，不要求安装 Office/WPS。`net35` 是程序集目标框架，不是 SDK 版本；运行时说明见[互操作](interop.html)。

不处理旧二进制 `.doc/.xls/.ppt`，不提供排版渲染、PDF 导出或 Excel 公式计算。验证通过不代表文档视觉保真或业务数据正确。

SDK 采用 MIT 许可证，许可证原文随库位于 `.res/LICENSE.Open-XML-SDK.txt`。
