【问题标题】:Empty pages in RDLC-ReportRDLC 报告中的空白页
【发布时间】:2011-06-17 09:17:02
【问题描述】:

我有一个包含 tablix 的 rdlc 报告,仅此而已。 Tablix 在水平方向上展开以显示日期,在垂直方向上展开以显示组。

只要我将内容区域的宽度设置为等于 tablix 的宽度,tablix 就可以按预期工作。

如果我将内容大小扩展到其固定大小(大约为 PageWidth-PageBorders)并运行报表,则每隔一页就是一个空页。
但是 tablix 只使用一页。每一个奇怪的页面都是绝对空的。似乎 tablix 将其水平扩展添加到当前定义的内容宽度,然后计算溢出。

reportviewer 版本为 3(2010 可再发行版)

有人对这种奇怪的行为有解决方案吗?

更新

如果我将报告导出到 excel,我会看到 tablix 的正确站点上有一个列,该列与生成的项目一样长。它似乎真的是一个错误或一个我不知道如何停用的功能。
我也尝试过从一个表创建相同的结构,但它导致了同样的问题,这并不令人惊讶,因为该表在内部也是一个 tablix。

更新 1

如果我将报告的“ConsumeContainerWhitespace”属性设置为true,则上述测试版本有效。但如果我将其他元素放在“白色”区域,效果会再次出现。

【问题讨论】:

标签: reportviewer rdlc


【解决方案1】:

设置页面属性ConsumeContainerWhitespace=true(在属性对话框中,F4)有帮助。然而,正确地构建报告无论如何都是棘手的。一开始它只有在我将所有额外内容添加到页眉和页脚时才有效。但这是不可接受的。经过大量尝试,我成功地按要求制作了报告。但是我真的不明白背后的逻辑。

我记得我已经完成了这样的报告(在两个方向上,水平和垂直一起增长)没有任何问题,我不知道这里的这份报告有什么不同。对于本报告,ConsumeContainerWhitespace-property 确实可以重现。但为什么我所做的类似报告从未发生在我身上,我不知道。我也不知道为什么在布局引擎接受我的设计之前我必须先绕圈。

【讨论】:

  • 嗨 HCL,我有同样的问题,但我找不到我的 reportviewer 的“ConsumeContainerWhitespace”属性。我应该在哪里找到它?(我使用的是 vs 2010)
  • @M_Mogharrabi:点击灰色部分的报告外部区域。属性窗格将显示“报告”。在那里你可以找到“ConsumeContainerWhiteSpace”属性。
  • 除了求解PageSize >= LeftMargin + BodySize + RightMargin 方程外,我在 2012 年使用打印预览器,它迫使我不仅要进行新的预览(来回更改标签),还要在转到预览选项卡,在那里刷新预览。
【解决方案2】:

解决此问题的最佳方法是,例如,对于 A4 页面, Width=21 cmHeight=29.7 cm

现在保证金Left=1 cmRight=1 cm 所以你的可用宽度为 19 厘米。

当您了解了这个基本计算时,意味着您的问题已经解决。您可以通过右键单击报告属性 => pagesetup 来设置报告页面大小属性。

【讨论】:

    【解决方案3】:

    检查“正文”尺寸,尽量使其宽度和高度与您的实际纸张尺寸一样,但只减少边距。

    【讨论】:

    • 这对我有用。我有一份工作正常的报告,然后在添加一个部分后,它开始在每个打印页面之间喷出空白(仅限页眉/页脚)页面。虽然页面大小或页边距没有明显问题,但我凭直觉采取行动,稍微减小页边距,比如两边各 0.05 英寸,问题就消失了。
    • 也为我工作。谢谢!!!
    【解决方案4】:

    我正在处理打印额外空白页的 RDLC 报告。我尝试了所有常用的技巧,以及我能想到的一切,直到我意识到问题是由报告的右边距区域中的额外可见空白引起的。报告中的一个对象(“矩形”)是一个或两个像素太宽,这妨碍了调整报告可见空间的大小。一旦我删除了所有额外的宽度,报告就会开始以预期的页数打印。

    Visual Studio 2017 (15.7.5) + Microsoft Rdlc 报表设计器扩展 (v14.2)

    【讨论】:

    • 不错的体验!我也遇到了同样的问题
    【解决方案5】:

    页面设计存在混乱。开发人员会认为正在设计的报告是所见即所得,但实际上并非如此!微软reportviewer会以你设计的页面为内容!!并附加在页面外部定义的边距,结果您的页面永远无法容纳一页!

    因此,当您设计新报表时,请关注内容区域、客户区域,包括页眉和页脚,并允许在外边框上附加边距。

    【讨论】:

      【解决方案6】:

      我也遇到了类似的问题,我是这样解决的

      例如宽度,应满足以下等式

      PageSize >= LeftMargin +  BodySize + RightMargin 
      

      在哪里可以找到 BodySize?

      F4 ->点击报告内某处->你会找到body属性(查看size属性,取宽度值)

      在哪里可以找到报告 PageSize?

      点击报告外的某处->你会发现报告属性(看PageSize(取它的宽度值)和marginsLeftright,..),取左右边距值)

      从这些属性中取值,并检查它们是否满足

      PageSize >= LeftMargin +  BodySize + RightMargin 
      

      【讨论】:

        【解决方案7】:

        在我使用报告正文的 heightwidth 之前,我遇到了同样的问题。 :)

        【讨论】:

        • 具体来说,您可以通过单击报告属性-> 页面设置找到页面宽度(例如:- 如果您选择了 A4 Lansacape 宽度将为 29.7cm),现在关闭该窗口并单击在报告正文的某处并按 F4,然后您将看到报告正文的属性。您所要做的就是确保正文宽度小于页面大小+左右边距。根据上面的例子,如果你的左右边距是1cm,你应该设置你的body width为27.5cm
        【解决方案8】:

        解决方案很简单ConsumeContainerWhiteSpace=True(您可以在“报告”的属性窗口中找到它)您将主菜单/报告/报告属性中的纸张尺寸设置为“A4”,然后检查该纸张尺寸大于body + header + footer + margins

        【讨论】:

          【解决方案9】:

          请在窗口顶部的对象选择器中选择“报告”。 并使 ConsumeContainerWhiteSpace = true 如果同样的问题仍然存在,那么您的 rdlc 报告大小应该小于您的报告正文。!

          【讨论】:

            【解决方案10】:

            我最近遇到了这个问题。

            根本原因可能是:
            您的报告正文有一些空白的向上报告页脚或其他地方。
            解决方案是:
            1、点击报告正文
            2、进入属性窗口,会看到body size属性
            3、查看车身尺寸,你可能会发现9.6654in,1.5625in这样的奇怪数字。
            这意味着您在页脚上方有一些空白,修改高度或宽度大小直到看不到空白为止。

            【讨论】:

              【解决方案11】:

              您需要确保您的 RDLC 报告有:

              1. ConsumeContainerWhiteSpace = true(按 F4 打开)
              2. 报告正文大小

              【讨论】:

                【解决方案12】:

                您需要将报告宽度属性设置为实际打印页面宽度。就我而言,6 英寸有帮助。

                【讨论】:

                  【解决方案13】:

                  页脚也可能导致问题。因此,如果您有一个,最好将其放置在尽可能靠近主要内容的位置。在这种情况下,您不需要设置 Body.Height 属性。

                  【讨论】:

                    【解决方案14】:
                    1. 转到属性 F4
                    2. 选择正文
                    3. 将宽高写入1cm

                    Visual Studio 将覆盖尽可能小的 Body

                    完成。

                    【讨论】:

                      【解决方案15】:

                      我的 4x2 英寸标签为一页报告打印了 3 页。

                      为了解决这个问题,我将Body.Size 属性减少到等于或小于Report.PageSize 减去相应Report.Margins 的总和。

                      【讨论】:

                        【解决方案16】:

                        试试这个,

                        只需确保所需的所有数据都在报告中, 然后选择表格或矩阵并使其向左挤压,如果需要,向左上角挤压,直到完成白页问题。

                        但要确保以正确的方式挤压细胞,要温柔(希望你明白了!!)

                        好的,再见

                        【讨论】:

                          【解决方案17】:

                          或者您可以仅以图形方式调整报表设计的大小,精确到最后一个报表控件或标签的底部。

                          或添加页脚部分以创建一些空间。

                          【讨论】:

                            【解决方案18】:

                            我认为这很重要,可以放在这里,特别是因为每天都有更多我们工作所需的关键信息不断消失:

                            来自对The "Every Other Page Is Blank" Feature的回复

                            许多 Reporting Services 用户都会问这个问题:

                            “我正在渲染为物理页面格式(PDF、图像、打印)和 出于某种原因,在所有其他页面之间插入了一个空白页面 在报告中。感谢 Reporting Services 提供免费页面。 这是一个迷人的功能,但纸张不是免费的,我正在获取纸张 切出打印后的所有空白页。我如何能 让它停下来?!”

                            我的回复:

                            这几乎总是由于您的报告正文太宽造成的 为您的页面。确保主体的宽度小于 物理页面大小,减去边距。对于那些喜欢 数学问题,请确保:

                            正文宽度

                            对于物理页面渲染器,请务必牢记 可用区域的概念。可用区域是剩余的空间量 在为您的报告预留空间后绘制的页面上 页边距、页眉和页脚以及列间距(对于多列 报告)。

                            水平可用面积:

                            X = Page.Width - (左边距 + 右边距 + 列间距)

                            垂直可用面积:

                            Y = Page.Height - (上边距 + 下边距 + 页眉高度 + 页脚 高度)

                            报告中的任何时间对象(包括正文本身)扩展 超过可用区域,因为它们是这样定义的,或者 因为它们在运行时增长,所以物理页面渲染器没有 选择,但要跳到一个新的页面。

                            【讨论】:

                              【解决方案19】:

                              确保身体尺寸是厘米,而不是英寸(英寸)

                              【讨论】:

                                【解决方案20】:

                                对我来说,当我将 pagesize 报告的宽度从 21 增加到 23 cm 时,它并没有生成额外的空白页面。 由于元素很少,我的报告元素的总大小大于 21 且小于 23,这就是为什么我改为 23cm 并为我工作的原因。 就我而言,我只有一页,并且正在使用 .rdl 文件。

                                【讨论】: