文档首页 / 帆软报表迁移

帆软报表迁移

用帆软报表转换器把 FineReport 的 .cpt 网格报表批量转成 Sight Report 的 .mrg,含操作步骤、数据源映射、配置项、支持与不支持的内容清单。

概述

帆软报表转换器把 FineReport 的 .cpt 网格报表批量转换为 Sight Report 网格报表文件 .mrg。单元格、数据绑定、扩展与分组、参数、查询面板、样式按确定的规则转换;无法确定翻译的公式和条件高亮会降级处理,并写进转换报告,交人工复核。

转换器是独立于平台的工具,纯 Python 标准库实现,也提供 Windows 和 macOS 的桌面版,桌面版无需安装 Python。转换在本机完成,输出的 .mrg 通过报表管理页导入平台。

帆软报表迁移流程:.cpt 经转换器输出 .mrg 与报告,再导入平台复核

功能入口

  • 下载:官网下载中心 https://sightdata.top/downloads,取用最新的帆软报表转换器。桌面版启动时会检查更新,有新版会在界面顶部提示,网络失败时不提示。
  • 导入:平台报表管理页的「导入」按钮,弹窗标题为「导入报表文件」。

操作步骤

用桌面版转换

  1. 下载并运行桌面版。Windows 为单个 .exe,需要系统已装 WebView2 Runtime(Windows 11 和多数 Windows 10 自带);macOS 为 .app,未签名,首次打开需右键选择「打开」。
  2. 「输入」中添加 .cpt 文件或文件夹,文件夹会递归查找 .cpt。
  3. 选择「输出目录」。
  4. 在「数据源映射」中点击「扫描连接名」,为每个帆软连接填写它在 Sight Report 中对应的数据连接名称。名称在平台「数据连接」管理里查看,按名称解析,不需要 id。留空的连接转换后会标为待人工。开始转换时若仍有用到但未填写的连接,会弹窗提醒,可选择「去映射填写」或「仍然继续」。
  5. 在「选项」中设置同名文件的处理方式:覆盖、跳过或重命名;是否额外打包 .zip(可在平台按目录批量导入);「合并为多页签报表」默认勾选。
  6. 点击「开始转换」。完成后每张报表显示单元格数、待人工数、降级数和状态,可打开输出目录和各自的报告。

用命令行转换

# 单个文件
python3 convert.py 某报表.cpt -o out

# 整个目录,递归查找 .cpt
python3 convert.py /路径/报表目录 -o out

# 带数据源映射等配置
python3 convert.py /路径/报表目录 -o out -c config.json

# 多 sheet 拆成多张独立报表
python3 convert.py 某报表.cpt -o out --split-sheets

# 同时打包成可批量导入的 zip
python3 convert.py /路径/报表目录 -o out --zip out.zip

Linux 没有桌面版,直接使用命令行。

导入平台

  1. 打开报表管理页,点击「导入」。
  2. 拖入或选择 .mrg 文件或转换器生成的 .zip,支持格式为 .mrg、.mrd、.mrs、.zip,一次最多 20 个文件。
  3. 导入后在设计器中打开,按转换报告逐项复核。

输出文件

文件 内容
<名称>.mrg 转换后的网格报表。多 sheet 默认合并为一个多页签报表
<名称>__<sheet>.mrg 拆分模式下每个 sheet 一张报表
<名称>.report.md 转换报告:概览、待人工项、已降级项、自动处理说明
_summary.md 批量转换多张报表时的汇总表

配置说明

复制 config.example.json 为 config.json,用 -c config.json 指定。所有键都可选,缺省走内置默认。

配置键 说明 取值/默认值
connection_map 帆软连接名到 Sight Report 数据连接名称的映射。未配置的连接沿用帆软原始连接名,并在报告中提示核对 键为帆软连接名,值为数据连接名称
length_divisor 行高列宽换算。导入后行列尺寸偏大或偏小时调整 示例文件中为 24130
font_size_divisor 字号换算。导入后字偏大改大此值,偏小改小 示例文件中为 6
font_size_min、font_size_max 转换后字号的下限和上限 示例文件中为 9 和 28
default_font_family 默认字体 示例文件中为微软雅黑
font_name_map 帆软字体名(小写)到中文字体名的映射 示例含 simhei 到黑体、simsun 到宋体
wrap_mode,命令行 --wrap-mode 内容超长时的行为 row 换行撑高行(默认);none 截断
auto_width,命令行 --auto-width 给所有列标记按内容定宽,需要 Sight Report 2.0.25 及以上 默认关闭
auto_width_max,命令行 --auto-width-max 与上一项配合,每列宽度上限,单位 pt 不给则由引擎按设计宽度推导
merge_sheets 是否把多 sheet 合并为多页签报表 默认合并;命令行 --split-sheets 等价于设为 false

auto_width 是整表统一设置,不按帆软单元格的自适应设置逐格转换。

支持与不支持

可转换

内容 转换方式
单元格网格 坐标、合并单元格、被合并隐藏的从属格
数据绑定与扩展 数据列绑定、纵向和横向扩展方向
父格 显式父格转为父子关系,小计行和交叉表的父子关系自动还原。复杂分组小计的父格靠位置推断,建议人工核对
分组与汇总 分组,sum、count、avg、max、min
条件高亮 公式条件,以及「本格值与常数比较」的结构化条件(后者按推定运算符语义转换,报告标为提示,需抽查颜色方向);动作为背景色、字体色、加粗,含单元格、行、列范围
SQL 数据集 参数语法翻译(含动态 SQL 片段),连接名映射为数据源
报表参数 名称、默认值、类型推断、必填。多选控件的参数类型为列表,单个复选框的参数类型为布尔
查询面板 见下表
样式 字体、颜色、加粗、边框、行高列宽
多 sheet 默认合并为多页签,也可拆分
公式 白名单内的函数,见下表

查询面板控件

帆软控件 Sight 组件
Label 文本
DateEditor 日期,按格式区分日期、日期时间、月份
TextEditor 输入框
NumberEditor 数字
ComboBox 下拉选择
ComboCheckBox 多选下拉
RadioGroup 单选
CheckBoxGroup 复选框组
CheckBox 开关,需要 Sight Report 2.0.30 及以上
FormSubmitButton 查询按钮
TreeComboBoxEditor 树形选择。层级可归约为单表自引用时转为 UNION 扁平数据集,否则转为按层懒加载;层级信息不全时标记交人工

下拉选项来自自定义键值时转为自定义选项,来自数据集字典时转为数据集绑定。控件位置原样保留;「不自动查询」转为打开时不取数;不允许为空转为必填。

公式函数

转换器采用白名单制:进入白名单的函数才视为干净转换,函数名相同但语义不同的(例如 FIND 的参数顺序和起始位置不同)不做直接映射。

类别 函数
同名直接 SUM、MAX、MIN、COUNT、ROUND、ABS、CEIL、FLOOR、IF、YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、NOW、UPPER、LOWER、TRIM、LEFT、RIGHT、REPLACE、SEQ、ROW、ROWS、COLUMN、COLUMNS、PAGE、PAGECOUNT
改名 AVERAGE 转 avg,CONCATENATE 转 concat,LEN 转 length,DATEDELTA 转 addDays,MONTHDELTA 转 addMonths,SUBSTITUTE 转 replace,CNMONEY 转 numberToRMB,TRUNC 转 trunc,DATETONUMBER 转 dateToNumber
按上下文或参数重写 TODAY(),DATEINMONTH(日期, 1 或 -1) 转月初、月末(其他整数 n 转为月初加 n-1 天),DATEINQUARTER(日期, 1 或 -1) 转季初、季末,FORMAT(x, 格式串) 按格式串转数字或日期格式化,单参 ROUNDUP(x),FIND 参数对调并补偏移,SWITCH 转嵌套三元,SPLIT、INDEXOFARRAY,数据集 .select 简单等值取数,$$$ 转 $$value,条件中的单 = 转 ==
直通 $参数、单元格名(如 B4)和区域(如 A1:A10)

带位数的 ROUNDUP(x,d) 等不在白名单内的函数,不做静默映射,公式在报告中标记,交人工处理。

不转换或需人工

内容 处理
含未映射函数的公式 逐格标记为已降级,需人工或 AI 处理
其他结构化条件高亮(跨字段、字符串比较、引用其他单元格、组合条件)及不支持的高亮样式 标记为待人工,需在设计器中重新配置
未在 connection_map 配置的数据源 沿用帆软原始连接名,报告标记为待人工,需核对与平台连接名称一致
查询面板控件上的自定义 JS 联动(级联下拉、自定义校验) 控件本身照常转换,JS 被忽略,报告标记交人工
自定义按钮(FreeButton) 不转换,标记交人工(标准的查询按钮 FormSubmitButton 可转换)
EditorHolder 容器控件 标记交人工
控件级装饰样式、面板标题、窗口位置 丢弃,保留标签、位置和尺寸
富文本、斜线表头 只提取纯文本
图表、子报表、填报 不处理

示例

把一个目录下的所有 .cpt 迁移到平台:

  1. 桌面版添加报表目录,输出目录选 D:\out。
  2. 点击「扫描连接名」,得到 DFHIS,在平台「数据连接」中查到对应连接名称为「门诊住院HIS库」,填入映射。
  3. 勾选打包 .zip,点击「开始转换」。
  4. 在结果列表里先处理「待人工」数不为 0 的报表,打开对应的 .report.md 逐条复核。
  5. 平台报表管理页「导入」,选择生成的 .zip,导入后在设计器中预览,抽查汇总和计数值。

注意事项

注意:转换报告中标记的待人工和已降级项必须复核,导入后应逐张对比帆软原报表的数据结果。汇总、计数类公式建议首张导入后抽查一个值。

注意:SQL 中作为取值的参数翻译为预编译绑定 ${$参数};只有动态 SQL 片段(如 ${if(...)}、含 and、in 等子句关键字的拼接)以及紧跟在 . 后的列名、表名位置的参数才翻译为文本内联的 #{}。含 #{} 的 SQL 需复核参数来源是否受控。

注意:REPLACE 的旧子串按正则解释,含 .、*、?、[、] 等字符时需要复核。

提示:转换后行高、列宽或字号不合适时,调整 length_divisor 和 font_size_divisor 后重新转换,不必逐张手改。

提示:暂不支持把锐浪(Grid++Report)报表转换为单据模板。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。