aardio 文档

模板、页结构与表格数据(0.11.0+)

本阶段聚焦 同文稿复制/删除幻灯片、保留格式的表格填值、矩形合并。这些操作全部由 fsys.openXml 原生完成,无需 Office/WPS/.NET。复制已有原生图表时可独立复制图表与内嵌工作簿;创建图表、改图表数据、跨文稿母版导入、近似预览不属于本阶段。

完整示例:~/examples/File/OpenXML/pptx-data.aardio。先生成模板,复制第二页并填入另一组数据,删除临时页,再合并表格单元格。数据是虚构演示值。

最小完整例子

import fsys.openXml.pptx.builder;
import fsys.openXml.pptx.editor;
var source,err=fsys.openXml.pptx.builder.write("/data-template.pptx",[
    {notes="原始模板";shapes=[{
        kind="table";name="Sales";x=60;y=120;width=720;height=180;
        fontSize=20;header={fill="17324D";color="FFFFFF"};
        rows=[["季度数据","",""],["项目","实际","启用"],["A",0,false]];
        merges=[{row=1;column=1;colSpan=3}];
    }]},
    {shapes=[{text="临时页,将被删除"}]}
]);
if(!source)return null,err;
var doc,err=fsys.openXml.pptx.editor.open(source);
if(!doc)return null,err;
var copy,err=doc.copySlide(1); // 副本现在位于第2页
if(!copy){doc.close();return null,err;}
var count,err=doc.setTableCells(2,"Sales",[["B",120,true]],{row=3;column=1});
if(count===null){doc.close();return null,err;}
var count,err=doc.deleteSlide(3); // 页号总是按当前顺序
if(count===null){doc.close();return null,err;}
var output,err=doc.save("/data-filled.pptx");
doc.close();
return output,err;

默认不覆盖源件或已有输出。需要覆盖测试输出时可显式传 overwrite=true;无论如何都不能覆盖编辑会话的源文档/可识别硬链接别名。

复制页

doc.copySlide(page,insertAt) 返回 {index,id,partName,relationshipId,copiedParts}。

删除页

doc.deleteSlides([1,3],options) 原子删除指定页,返回删除数;deleteSlide(page,options) 是单页便捷方法。数组的页号都指 调用开始时 的当前页序;重复、越界和空洞拒绝。空数组返回0;普通演示允许删到零页。

查表与填值

getTable(page,target):target 为表格形状ID或唯一名称。返回 id,name,rows,merges,rowCount,columnCount,columnWidths,rowHeights,宽高单位point。rows 是矩形物理网格文字,合并覆盖格不缩掉。

setTableCells(page,target,values,{row=1;column=1}) 填矩形区域;setTableCell(page,target,row,column,value) 填一格。

合并单元格

生成阶段:kind="table" 的 merges=[{row,column,rowSpan,colSpan}]。行列从1开始,跨度默认1,至少覆盖两格;保持完整 rows 网格,被覆盖格必须为空。越界/重叠/隐藏非空数据拒绝。

编辑阶段:mergeTableCells(page,target,{row=1;column=1;rowSpan=2;colSpan=2},options)。

边界

仅支持合法 DrawingML 原生矩形表格,不把图片、SmartArt或图表冒充表格。已有不一致的合并标记拒绝。

原生生成样本、编辑往返、未改部件字节、失败原子性及关键 Office 属性均有自动测试。Office 产生的复杂图表可能带旧版 SDK 不识别的扩展;复制应保留原字节并比较源件诊断,不能删除扩展来伪造零错误。WPS/其他 Office 版本仍需用实际交付样本验收。

Markdown 格式