案例六:在word中打印钻孔一览表

案例概述

本案例从 GDIM 读取钻孔一览表数据,转换为报告数据后按 Word 模板输出 .docx 文件。

你将学到

将 GDIM 表数据接入 PipeLine,串联读表、写 DocData、打印报告三个模块,完成自动出报告。

  • GdimTableReadertable_fields 指定要读的表。

  • DocDataWriter 将表数据转为 DocData,并用 precision 控制数值小数位。

  • DocPrintertemplateoutput_namesave_to_gdim 完成模板渲染与本地(或平台)保存。

  • add_attributesave_pipeline 把模板路径等参数暴露给前端并保存 .pipe 流程文件。

实现思路

  1. 创建 PipeLine,设置 workspace,并用 log_inproj_id 调用 update_gdim_state

  2. 创建 GdimTableReader,设置 table_fields``(如 ``["钻孔一览表"])。

  3. 创建 DocDataWriter,按需设置 precision

  4. 创建 DocPrinter,设置 templateoutput_namesave_to_gdim

  5. OutputTablesInputDataOutputDocDataInputDocData 连成链路并 add_links

  6. 按需 add_attribute 暴露模板路径,save_pipeline 保存流程。

  7. 运行 pipeline.run(),从 PrintDocOutputFile 取得生成文件路径或文件对象。

关键代码

本例中最为关键的读表、转换与打印相关代码如下。

read_table = GdimTableReader(mname="ReadTable")
read_table.table_fields = ["钻孔一览表"]  # 同时支持 name 和 title

doc_data = DocDataWriter(mname="DocData")
doc_data.precision = 2

print_doc = DocPrinter(mname="PrintDoc")
print_doc.template = f"{pipeline.workspace}/钻孔一览表模板.docx"
print_doc.output_name = "钻孔一览表.docx"
print_doc.save_to_gdim = False

links = (
    read_table.OutputTables >> doc_data.InputData
    | doc_data.OutputDocData >> print_doc.InputDocData
)
pipeline.add_links(links)

pipeline.run()
print(print_doc.OutputFile.data)

更进一步

完整代码请查看以下链接:

printBoreTable.py