gpt4 book ai didi

excel - 为什么我的交叉表在 Excel 中被切断?

转载 作者:行者123 更新时间:2023-12-01 16:52:25 26 4
gpt4 key购买 nike

我正在尝试使用 BIRT 创建 Excel 电子表格。该电子表格是将两个对象映射在一起的交叉表。行数和列数是根据 MySQL 数据库中的值动态变化的。目前我已经实现了 PDF 输出报告。现在,我正在尝试创建 Excel 报告的第二个版本。

我已经复制了报告设计并开始调整它以与 Excel 一起使用。一切看起来都不错,但标题后面只显示前 3 列。所有行都正确显示。

我尝试过以下方法:

  • 我尝试在页面上的每个元素上将“溢出”设置为“可见”。这没有效果。
  • 我尝试将主页的高度和宽度设置为大得离谱。所有信息都正确显示,但我希望找到一个没有硬编码值的解决方案。以后数据宽度可能会再次超出我的任意值而被截断。

我在以下方面受到限制:

  • 我无法切换报告引擎(我必须使用 BIRT)。
  • 我无法切换 Excel 发射器。

这篇博客文章提到了我的问题: http://www.spudsoft.co.uk/2011/10/the-spudsoft-birt-excel-emitters/但除了发射器开关之外,它没有提供其他解决方案。具体引用是“这些文件也存在我无法解决的页面布局问题(特别是宽的报告将被切断)。”

除了一篇博客文章之外,我的 googlefu 还让我失望。任何帮助表示赞赏!谢谢!

最佳答案

这里有两个问题。第一个相对简单,第二个比较复杂。

1.为什么我的交叉表在Excel中被切断了?

2.如何在运行时根据报表的列数动态调整母版页宽度?

A1:交叉选项卡被切断,因为列宽已手动设置,其中列数将超出母版页的设置宽度。每当您获取报表设计元素并进行调整时,BIRT 都会假设您知道自己在做什么,并且不会覆盖您的设置。

解决方案是重新创建报表元素(表或交叉表),而不是手动调整任何大小。当在 HTML 或 Excel 中运行时,所有列将自动设置为以可用的母版页宽度显示。

BIRT 4.2 交叉表、报表项的屏幕截图,母版页宽度为 2 英寸,列数为 30

Two Inch by 30 Columns

A2:这并不容易,我现在不会提供答案。我将指出解决方案并确定一些障碍。此问题的有效解决方案必须包括使用示例数据库的有效解决方案。

(自 BIRT 4.2.1 起)

挑战1 - 设置母版页宽度BIRT Report Scripting在报告表或交叉表项目完成之前的事件中。您不能简单地计算报告中有多少列;

如果你想计算列数——

报表设计初始化

 columnCount = 0;

交叉选项卡,onCreate

 columnCount ++;

在我的研究中,建议有两种路径用于在创建交叉表项之前对列进行计数。要么

  1. 在 beforeFactory 中运行数据集(这意味着对数据库进行两次查询,一次用于计数,一次用于报告),然后获取计数并使用它。 p>

  2. 计算初始查询中的值并将其收集到数据集中 onFetch。

我遵循了使用计算列的数据集、onFetch 选项,但没有使其正常工作。

挑战2 - 母版页的宽度属性必须在报表设计之前或渲染之前设置。 beforeFactory 是最常推荐的。此外,母版页的宽度属性仅在母版页“类型”设置为“自定义”时可用,在我的尝试中,我在属性编辑器常规中手动设置此属性。

将值从 onFetch 传递到 beforeFactory 必须使用 PersistentGlobalVariable 来完成,该变量只能传递字符串,而不能传递整数。我发现了各种方法都行不通。即使在 PersistentGlobalVariable 中传递“12in”也无法调整母版页宽度

beforeFactory 中的这些代码都将调整母版页宽度(当 Type = Custom 时)

传递值

reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage("Simple MasterPage").setProperty("width","12in");

计算一个值并传递

increaseWidth = 20;
reportContext.getReportRunnable().designHandle.getDesignHandle().findMasterPage( "Simple MasterPage").setProperty("width",((2+increaseWidth)+"in"));

最后,我无法找到或创建一个功能报告来调整在报告运行时生成的数字列上传递的母版页宽度。我认为这是可能的,但这样做超出了我目前的能力。

关于excel - 为什么我的交叉表在 Excel 中被切断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11672583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com