aardio 文档
aardio 范例: 直接从结构化内容生成 DOCX;无需 Office、HTML 或 .NET。
// 直接从结构化内容生成 DOCX;无需 Office、HTML 或 .NET。
import fsys.openXml.docx.builder;
import fsys.dlg;
var document={
numbering=[{kind="decimal";start=3},{kind="bullet"}];
blocks=[
{style="Heading1";runs=[{kind="bookmark";name="Intro";id=1},{text="Word 原生生成"}]},
{text="段落、文本格式、编号、链接与表格都是真实的 Word 内容,可以继续编辑。"},
{style="Heading2";text="格式化文字"},
{runs=[
{text="加粗";bold=true},
{text=" / 斜体";italic=true},
{text=" / 高亮";background=0xFFF8C5},
{text=" / 蓝色";color=0x0969DA},
{kind="break"},
{text="零与布尔值: "},{text=0},{text=" / "},{text=false}
]},
{style="Heading2";text="连续编号"},
{text="使用结构化内容组织报告。";numId=1},
{text="调用 builder 生成 Word 部件。";numId=1},
{text="由公共 writer 完成安全保存。";numId=1},
{style="Heading2";text="表格与数据"},
{kind="table";widths=[2600,6426];rows=[
{header=true;cells=[
{background=0xF6F8FA;blocks=[{runs=[{text="项目";bold=true}]}]},
{background=0xF6F8FA;blocks=[{runs=[{text="值";bold=true}]}]}
]},
["计数",0],["完成",false],["空值展示",""]
]},
{style="CodeBlock";text='var value = 0;\nprint(value);'},
{runs=[{kind="break";breakType="page"}]},
{style="Heading1";text="转换共用一个内核"},
{text="Markdown → 有限 HTML → fsys.openXml.docx.builder → fsys.openXml.writer → DOCX"},
{text="HTML 适配器处理空白、任务列表和宽表格降级。";numId=2},
{text="Word 生成器负责段落、表格、编号、样式和关系。";numId=2},
{text="ZIP 写入和原子保存只在公共 writer 中实现。";numId=2},
{quote=true;left=360;text="这是一个有限、可测试的生成子集,不是网页排版器,也不会改写用户已有的 Word 文档。"},
{runs=[{text="返回标题";hyperlink={anchor="Intro"}},{text=" "},{text="aardio 网站";hyperlink="https://www.aardio.com/"}]}
]
};
var path=fsys.dlg.save("Word 文档|*.docx|","保存 Word 原生生成示例",,,,"word-native.docx");
if(!path)return;
var saved,err,report=fsys.openXml.docx.builder.write(path,document,{
title="Word 原生生成";author="aardio";
});
if(!saved){print(err);return null,err;}
raw.explore(saved,"/select");
return saved,report;
Markdown 格式