LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告

Posted

技术标签:

【中文标题】LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告【英文标题】:canShrink property on LabelHandle is not working with PDF and EXCEL Report using BIRT 【发布时间】:2018-04-15 23:16:04 【问题描述】:

我正在使用 BIRT(4.6) 和 Eclipse mars2(4.5)。 我正在使用 EngineConfig 对象创建报告并以 html、PDF 和 EXCEL 格式创建报告。

我动态填充的表数和表内数据。

我正在为报告中的每一列创建 CellHandle 并在其中添加 LabelHandle。我正在根据要设置的字符串的大小设置 LabelHandle 的宽度,并且所有三个报告(PDF、HTML 和 EXCEL)都正确显示。但是设置 LabelHandle 基于宽度的字符串大小并不是一个好的做法,有时报告中会丢失数据。 因此尝试在 LabelHandle 上使用“canShrink”属性,如下所示。

labelHandleObj.setProperty("canShrink", "True");

上面的语句会根据字符串大小自动调整 LableHandle 的宽度,这样就避免了我根据字符串大小手动设置 LableHandle 的大小。

使用 canShrink 属性,我的 HTML 报告可以正确生成,没有数据丢失并且单元格中没有提取空间/填充。这就是我想要的报告方式。

但是当涉及到 PDF 和 EXCEL 时,表格无法正确显示,所有列都被隐藏,数据无法正确显示。您可以点击以下链接查看 PDF 报告。

PDF Report after setting the canShrink property on LableHandle

任何人都可以建议我,如何在 PDF 和 Excel 报告中正确获取数据。但我想使用 CanShrink 属性,因为它正在创建正确的 HTML 报告。我尝试了 CanShrink 的 True 和 False 值,但对 PDF 和 EXCEL 没有用。

有什么方法可以在不使用 CanShrink 的情况下正确获取这三个报告。

提前致谢。

【问题讨论】:

【参考方案1】:

当发生这种情况时,您应该尝试复制表格并将其插入到原始表格下,然后使用visibility 选项卡从 PDF 中隐藏原始表格,然后从除 PDF 之外的所有内容中隐藏副本。我已经这样做了很多次,它确实解决了问题,但这样做的主要缺点是如果你想改变一些东西,你必须在两个表中做。示例报告:

【讨论】:

感谢您的快速回复 Klimiuk。 感谢您的快速回复 Klimiuk。意思是您建议手动修改 .rptDesign 文件? 根据我的要求...用户将选择他/她想要生成报告的数据文件并选择报告文件格式选项(HTML/PDF/EXCEL由我提供) 并生成报告。因此无法在运行时编辑 .rptdesign 文件 backgroup。 您必须在 BIRT 中编辑 .rptdesign 文件。并且只需使用可见性选项卡来隐藏表格。如果用户选择 pdf,则一个表格将在 PDF 中可见,另一个在 HTML 中可见,因此不需要用户执行其他操作。 我想你错过了理解我的要求。我不是在创建数据源和数据集,正如我在上面提到的所有内容,甚至表也是我以编程方式创建的。我想要 HTML、PDF 和 EXCEL 格式的完整报告,而不是一种格式的表格。

以上是关于LabelHandle 上的 canShrink 属性不适用于使用 BIRT 的 PDF 和 EXCEL 报告的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Access 报告中每 10 行额外的空间

MS Access 报告中的格式问题 - 高度属性不会随 CanShink 和 CanGrow 属性而改变

教你30秒去掉图片上的遮挡方法,怎么把照片上的遮挡物去掉!

同一应用程序上的两种不同语言 PHP 和 Java,Apache 上的 PHP 和 Tomcat 上的 Java

UILabel 上的奇怪行为与 StoryBoard 上的 \n

iPhone 上的字体大小比 PC 上的小