Crystal Reports 2020行转列求助:行数据转列并导出Excel
在Crystal Reports 2020中实现行转列(适配Excel导出)
针对你需要将同ActionID的多行数据转为多列、最终导出Excel的需求,可按以下步骤操作:
1. 分组与排序数据源
- 按
ActionID创建分组:右键报表字段 → 插入 → 组,选择ActionID作为分组字段。 - 设置组内排序:右键分组页眉 → 更改组专家 → 点击「排序」按钮,选择
TranID按升序排列(确保同ActionID下的记录按你需要的列顺序映射)。
2. 创建组内行数标记字段
需要用运行总计来区分同组内的第1、2、3行:
- 打开「字段资源管理器」→ 右键「运行总计字段」→ 新建。
- 名称设为
RowNumberInGroup,汇总字段选任意(如TranID),汇总类型选「计数」。 - 评估条件选「对于每个记录」,重置条件选「组更改时」并选择
ActionID组,点击确定。 - 将该字段拖到细节区(后续可隐藏,仅用于判断行号)。
3. 创建列映射公式字段
为每个需要转列的字段创建对应序号的公式:
- FinDept1公式:
if {#RowNumberInGroup} = 1 then {你的表名.FinDept} else "" - TotalPercentage1公式:
if {#RowNumberInGroup} = 1 then {你的表名.Total Percentage} else 0 - 同理创建
FinDept2、TotalPercentage2、FinDept3、TotalPercentage3,只需把公式中的数字替换为2、3即可(如果同ActionID下最多有N行,就创建到N对应的公式)。
4. 调整报表布局
- 隐藏细节区:右键细节区 → 格式化节 → 勾选「抑制显示(无 Drill-Down)」。
- 在组页脚区放置字段:依次放入
ActionID、FinDept1、TotalPercentage1、FinDept2、TotalPercentage2、FinDept3、TotalPercentage3。 - 在报表页眉区添加对应表头,比如「FinDept1」「Total Percentage1」等,与你的期望输出匹配。
5. Excel导出适配
- 导出前确保字段间距整齐,避免列错位。
- 导出时选择「Microsoft Excel 97-2003」或对应Excel格式,在导出选项中勾选「保留格式」、取消「导出空行」,保证导出结果符合预期。
内容的提问来源于stack exchange,提问作者shimkoko
相关产品推荐
相关产品推荐

