aardio 文档

结构、样式与日期解释

需要 fsys.openXml 0.15.0+。以下增强均不改变原来的保存值/公式缓存契约,也不创建 Office 进程。

精确 A1 矩形

import fsys.openXml.xlsx;
var data,err = fsys.openXml.xlsx.readSheet("/input.xlsx",1,{
    range = "$B$3:$M$8";
    includeStructure = true;
    includeStyles = true;
    parseDates = true;
});
if(!data) return null,err;
return data;

结构元信息

includeStructure=true 增加 data.structure 和 data.definedNames。整簿入口的顶层也有 definedNames。结构描述是整页/整簿的,不受矩形行列限额过滤。

字段 内容
structure.merges ref、起止行列、尺寸、左上角 anchor
structure.rows 按源顺序记录已保存行的 row,hidden,height,customHeight,styleIndex,customFormat,outlineLevel,collapsed
structure.columns 区间 min,max,hidden,width,styleIndex,customWidth,outlineLevel,collapsed
defaultRowHidden/defaultRowHeight/defaultColumnWidth 保存的工作表默认行列属性
structure.tables 按本页关系读取的表对象:name,displayName,id,partName,ref,range,headerRowCount,totalsRowCount,totalsRowShown,columns
structure.autoFilterRef 保存的自动筛选范围,不执行筛选条件
definedNames name,expression,scope,hidden,resolved,本地名称有 1 起始 sheetIndex

行高单位为 point;列宽是 Excel 保存的字符宽单位,不换算像素。行的 hidden=null 表示未显式指定,可使用 defaultRowHidden;列区间保留源顺序,重叠时查询使用后面的定义覆盖前面的定义。

名称只解析单个普通静态 A1 区域:成功时有 range,targetSheetIndex,targetSheet;支持带引号和双单引号转义的页名、本地名称的不带页名前缀引用。动态公式、联合范围、结构化引用、外部工作簿引用仅保留表达式,resolved=false,不求值、不访问外部资源。可以将已解析名称的 targetSheetIndex 和 range.ref 显式传给读取/查询入口。

表对象只提供元信息,不重算计算列或汇总行。缺失、外部或错误类型的表关系在请求结构时失败。合并格不复制主格值,不把隐藏行列与不存在的数据混为一谈。

保存样式

includeStyles=true 给返回的每个 cell 增加 style:

索引来自单元格 s,未指定按 cellXfs[0];数字格式在有 xfId、明确 applyNumberFormat=false 时使用基样式。这里只解释保存的单元格 XF 子集,不计算行列默认样式、条件格式、表样式、主题等叠加后的最终外观;行列样式可通过结构信息另行检查。字体/对齐不是完整继承后的最终样式。

样式部件按需读取,并在一个 readWorkbook 调用内复用。默认原始读取不加载 styles.xml,因此旧读取行为保持不变;主动请求增强时会报告损坏样式/越界索引。

可选日期解释

parseDates=true 同时启用样式描述,只附加 cell.interpretation,不修改 cell.value/raw,也不改变 rows 的数字值。

formatKind interpretation
date kind,serial,dateSystem,iso,year,month,day,secondsOfDay
datetime 同上,ISO 含 T 和时分秒
time ISO 为时分秒,整数天不拼成日期;保留 secondsOfDay
duration kind,serial,totalSeconds,允许负数和超过24小时
percentage/number/general/text/unsupported 不产生日期解释,保留原始值

需要 Excel/WPS 完全一致的显示文本或公式重算时仍走 COM。

有界预览与摘要

import fsys.openXml.xlsx;
var book,err = fsys.openXml.xlsx.inspectWorkbook("/input.xlsx",{
    maxSheets=3;maxRows=20;maxColumns=16;
});
if(!book) return null,err;
return book;

默认最多20表/20行/20列,自动开启结构、样式、日期解释。各页增加:

预览矩形有界,但完整结构元信息仍受包/XML安全预算约束;不是只读取文件前几行,更不是流式解析。整簿坏页的 keepErrors、partial、complete 规则与 readWorkbook 相同。

Markdown 格式