You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可在不打开OSISoft PI ProcessBook的前提下导出状态报告为CSV

编辑 [已关闭]
我需要基于多个文件生成多份状态报告,为此计划开发脚本,在不打开OSISoft PI ProcessBook程序的前提下将状态报告导出为CSV格式。请问该方案是否可行?还是我需要编写「模拟点击」脚本,通过点击「保存到文件」按钮来生成CSV?
当前运行环境为搭载.pi格式文件的OSISoft PI ProcessBook
(附截图:状态报告可保存为CSV文件)


方案可行性结论

完全不需要使用模拟点击脚本,不用打开PI ProcessBook可视化界面就能批量导出状态报告为CSV的方案是完全可行的,推荐以下两种稳定实现路径,优先级从高到低:

路径1:调用PI ProcessBook原生COM接口(推荐,适配性最强)

ProcessBook本身自带可编程的COM组件,支持后台静默加载.pi文件,不需要弹出主界面就能操作文件内所有元素,你可以用VBScript、C#或者Python(搭配pywin32库)实现,核心逻辑如下:

  • 初始化ProcessBook应用对象时设置Visible = False,全程后台运行无界面
  • 加载目标.pi文件后遍历定位到状态报告对象,直接调用内置的SaveAs方法指定CSV格式输出即可

Python示例核心代码:

import win32com.client

# 初始化ProcessBook应用,设为后台运行
pb_app = win32com.client.Dispatch("PIProcessBook.Application")
pb_app.Visible = False

# 遍历所有待处理的pi文件
pi_file_list = [r"C:\path\to\report1.pi", r"C:\path\to\report2.pi"]
for idx, pi_path in enumerate(pi_file_list):
    pb_doc = pb_app.Open(pi_path)
    # 定位文件内的状态报告元素,不同版本状态报告的Type常量可能略有差异,可自行打印验证
    for sym in pb_doc.Symbols:
        if sym.Name == "目标状态报告名" or sym.Type == 32:
            # 导出为CSV,第二个参数1对应CSV格式
            sym.SaveAs(r"C:\output\path\report_{}.csv".format(idx), 1)
    pb_doc.Close()

# 退出进程,避免后台残留
pb_app.Quit()

路径2:直接拉取PI数据生成CSV(无需依赖ProcessBook程序)

如果你的运行环境不能安装ProcessBook,也可以直接解析.pi文件里的状态报告配置(包含取数点位、时间范围、计算规则等),调用PI AF SDK直接从PI Server拉取对应数据,自行拼接生成CSV文件,这种方案连ProcessBook进程都不需要启动,性能更高。

注意事项

  • 两种方案的稳定性远高于模拟点击,不会受界面弹窗、分辨率变化、程序卡顿等因素影响,天生支持批量处理
  • 用COM接口的方案注意执行完后主动调用Quit方法,避免ProcessBook后台残留进程占用.pi文件

内容的提问来源于stack exchange,提问作者NayNay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:51:02