Typed OpenDocument spreadsheet writer with deterministic packages
Dependencies
| 支持 | 明确不支持 |
|---|---|
| 中文、XML 转义、空格/制表/换行、空字符串及空值 | ODS 读取、ODS↔其他格式转换 |
| 有限 Double、布尔、Gregorian 日期(年月日) | 货币类型、时区/时间戳、任意精度十进制 |
| of:= 公式文本及 string/number/bool/date 缓存 | 公式语法验证、求值、重算或依赖图 |
| 多表、五种基础样式、整数毫米列宽、矩形合并 | 图表、图片、任意样式、冻结窗格、条件格式 |
| ODF 1.3 content/styles/manifest、固定 STORED ZIP | 宏、脚本、外部数据源连接、加密/签名、ZIP64 |
moon check --target js -j 1 --deny-warn
moon build --target js -j 1 --deny-warn
moon test --target js -j 1 --deny-warn
moon run --target js -j 1 examples/generatemoon add sundaysebasidian-byte/moonods@0.1.0
moon check --target js -j 1moon.work members = ["candidate", "consumer"]
candidate/moon.mod 从moon package ZIP解压
consumer/moon.mod import { "sundaysebasidian-byte/moonods@0.1.0" }
consumer/src/moon.pkg import { "sundaysebasidian-byte/moonods" @ods }// moon.pkg
import { "sundaysebasidian-byte/moonods" @ods }fn make_report() -> Bytes raise @ods.OdsError {
let workbook = @ods.Workbook::new()
let sheet = workbook.add_sheet("销售")
sheet.set(0, 0, @ods.Cell::new(Text("十月销售")).styled(Header))
sheet.merge(0, 0, 1, 2)
sheet.set(1, 0, @ods.Cell::new(Date(2026, 10, 1)).styled(DateISO))
sheet.set(1, 1, @ods.Cell::new(Number(399.88)).styled(Decimal2))
sheet.set(2, 1, @ods.Cell::formula("of:=[.B2]*2", Number(799.76)))
sheet.set_column_width(1, 45)
workbook.to_ods()
}| 文件 | 输入与用途 | 独立核值要点 |
|---|---|---|
| sales.ods | 中文产品/月度汇总,合并标题、表头、日期、金额、列宽 | 销量 20、金额 399.88;Decimal2 仅显示样式 |
| experiment.ods | “样本”“元数据”两表,测量数值、布尔标志与长备注 | -0.125、true/false、空值≠空字符串、中文空白和 emoji |
| formulas.ods | 数值、布尔、字符串、日期公式及调用方缓存 | SUM 缓存 30;其余类型缓存按输入保留,不声称求值正确 |
| 限制 | 当前政策 |
|---|---|
| 工作表 | 最多 32;名称 1..31 UTF-16 单位,非空白;不允许 []:*?/\\、控制字符、首尾单引号;忽略大小写查重 |
| 单元格索引 | 行 0..1023、列 0..127;每表实际渲染矩形≤65,536 格,工作簿合计≤262,144 格 |
| 字符串/公式 | 每段≤32,767 UTF-16 单位;每表文本与公式合计≤2,097,152,工作簿合计≤4,194,304 |
| 合并/列宽 | 每表≤256 合并;矩形至少两格,不越界、不重叠、不覆盖显式已写值(即使 Empty);列宽 1..500 mm |
| 序列化 | content.xml UTF-8≤16 MiB,完整包≤32 MiB;任一预算可先触发。不是进程 RSS 限制 |
# 使用已有含上述依赖的 Python,不必与系统 python3 相同
python scripts/fetch_schemas.py
python scripts/acceptance.py --moon /absolute/path/to/existing/sdk/bin/moon
# 上述验收也执行独立模块候选消费;单独复核可用:
python scripts/verify_reuse.py --moon /absolute/path/to/existing/sdk/bin/moontype Celltype Sheetpub(all) enum Style {
Plain
Header
Highlight
Decimal2
DateISO
}type Workbook