# fsys.openXml 库模块帮助文档

[» fsys.openXml 使用指南](https://www.aardio.com/zh-cn/docs/library/fsys/openXml/)

## fsys.openXml 成员列表 <a id="fsys.openXml" href="#fsys.openXml">&#x23;</a>

Office Open XML 文件处理基础库；  
包读取、部件导出与 PPTX/DOCX/XLSX 内容提取；0.6.0 新增 writer/editor 与 PPTX 生成/有限编辑，0.7.0 增加渐变/透明度、图片适配与精细排版，0.8.0 增加生成前版式预检 builder.check、分文种字体与线条箭头；0.9.0 增加逐段落动画、Morph 淡出回退与标题占位符/标准版式；0.10.0 增加页码字段、点击超链接、原生编号、外阴影与圆角半径；0.11.0 增加同文稿页复制/删除、表格填值与矩形合并；0.12.0 增加二维柱/条/折线/饼图和内嵌XLSX；0.13.0 增加 DOCX 结构化生成；0.14.0 增加 DOCX 受控文字替换与表格填值；0.16.0 增加普通 XLSX 固定坐标受控 editor。  
使用系统 MSXML，无 Office/WPS/.NET 运行依赖；open/read 不改源包，写入通过明确的 write/save 入口。  
纯生成可独立导入 fsys.openXml.pptx.builder，不加载读取器。

### fsys.openXml.open() <a id="fsys.openXml.open" href="#fsys.openXml.open">&#x23;</a>
[返回对象:openXmlPackageObject](#openXmlPackageObject)

### fsys.openXml.open(path,options) <a id="fsys.openXml.open" href="#fsys.openXml.open">&#x23;</a>
只读打开 ZIP/OpenXML 包，验证中央目录与内容类型。  
失败返回 null,err；不支持传统 Office 二进制、分卷或加密文件。  
可选限额：maxEntries=10000,maxPartBytes=16777216,maxReadBytes=134217728,maxXmlDepth=128,maxXmlNodes=200000。

### fsys.openXml.resolveTarget(sourcePart,target) <a id="fsys.openXml.resolveTarget" href="#fsys.openXml.resolveTarget">&#x23;</a>
相对源部件解析包内关系目标，返回不以 / 开头的部件名。  
包根源用空字符串；禁止越界、反斜杠、外部方案、查询与片段；不访问资源。

## openXmlPackageObject 成员列表 <a id="openXmlPackageObject" href="#openXmlPackageObject">&#x23;</a>

### openXmlPackageObject.close() <a id="openXmlPackageObject.close" href="#openXmlPackageObject.close">&#x23;</a>
关闭 ZIP 句柄，可以重复调用。关闭后读取返回 null,err。

### openXmlPackageObject.extractPart(name,filePath,overwrite=false) <a id="openXmlPackageObject.extractPart" href="#openXmlPackageObject.extractPart">&#x23;</a>
将原始部件字节导出到明确指定的文件路径，返回完整输出路径；失败返回 null,err。  
默认不覆盖，禁止写回源文档；先校验长度/CRC/读取限额，再写同目录临时文件并提交。  
单次失败不留下半成品目标，也不预先清空已有目标；不是包编辑或文档生成。

### openXmlPackageObject.getContentType(name) <a id="openXmlPackageObject.getContentType" href="#openXmlPackageObject.getContentType">&#x23;</a>
返回内容类型；未声明返回 null。

### openXmlPackageObject.getMainPart() <a id="openXmlPackageObject.getMainPart" href="#openXmlPackageObject.getMainPart">&#x23;</a>
根据包关系定位主文档部件；不依赖固定目录或文件名。

### openXmlPackageObject.getRelationships(sourcePart="字符串参数") <a id="openXmlPackageObject.getRelationships" href="#openXmlPackageObject.getRelationships">&#x23;</a>
返回源部件关系数组；包关系使用空字符串。  
字段 id,type,target,external,partName；外部关系没有 partName，也不会跟随。  
缺少 .rels 返回空数组；无效或缺失内部目标返回 null,err。

### openXmlPackageObject.hasPart(name) <a id="openXmlPackageObject.hasPart" href="#openXmlPackageObject.hasPart">&#x23;</a>
部件存在返回 true，否则 false,err；名称可有一个前导 /。

### openXmlPackageObject.listEntries() <a id="openXmlPackageObject.listEntries" href="#openXmlPackageObject.listEntries">&#x23;</a>
返回全部 ZIP 条目的元信息数组：name,isDir,size,compressedSize,contentType。  
保留实际存在的目录项（name 以 / 结尾），不合成隐式目录；不读取各条目的内容。

### openXmlPackageObject.listParts() <a id="openXmlPackageObject.listParts" href="#openXmlPackageObject.listParts">&#x23;</a>
返回包内文件数组：name,size,compressedSize,contentType。  
包含 [Content_Types].xml；不含 ZIP 目录项。

### openXmlPackageObject.path <a id="openXmlPackageObject.path" href="#openXmlPackageObject.path">&#x23;</a>
源文件完整路径，只读。

### openXmlPackageObject.readPart(name) <a id="openXmlPackageObject.readPart" href="#openXmlPackageObject.readPart">&#x23;</a>
读取单个部件为二进制字符串；空文件返回空字符串。  
检查实际长度、CRC 与累计读取限额；失败返回 null,err。

### openXmlPackageObject.readXml() <a id="openXmlPackageObject.readXml" href="#openXmlPackageObject.readXml">&#x23;</a>
[返回对象:msXmlNodeObject](#msXmlNodeObject)

### openXmlPackageObject.readXml(name) <a id="openXmlPackageObject.readXml" href="#openXmlPackageObject.readXml">&#x23;</a>
读取 XML 为 MSXML DOM 根元素；失败返回 null,err。  
使用 fsys.openXml.xml 查询辅助；DOM 节点限当前线程使用，关闭包后仍可读取。
