许多文章中都提到 ActiveReports 优越的性能和文件交换功能。所以我将省略一些基础知识。
这篇文章将阐述许多用户都会遇到的问题:“如何在导出报表到 excel 文件时隐藏 Page Header 区域”或者“怎样在导出 excel 文件时是 Page Header 只显示一次”。
在开始之前,我们来看看为什么在导出 excel 文件时会出现这个问题。
每一种导出格式都有一些独有的特性,例如,报表中页面中的所有区域都会导出到特定格式文件。所以导出的文件中就会理所当然的包含报表中的所有区域。这种规则适用于到多数导出格式。但是,由于 excel 中没有页的概念,所以我们将无法得到预期的结果。
因此,我们在导出报表到 excel 文件时,所有报表页面将导出到一个sheet中。结果将是在 excel 文件中多次出现 Page Header 。
解决方法:
在 PageHeader_Format 事件中通过逻辑代码判断是否为第一页,如果不是就设置其 Visible 属性为 False。进而隐藏 Page Header。
代码如下:
- private void PageHeader_Format(object sender, EventArgs e)
- {
- {
- if (this.PageNumber > 1)
- {
- this.PageHeader.Visible = false;
- }
- }
复制代码
这是另外一个问题就出现了,许多用户只想在导出时实现上述效果,而在预览报表时每一页都显示 PageHeader。但是在报表渲染到 Viewer 之后,报表文件是只读的,不可操作的。
下面是完整的解决方案:
解决方法为,我们需要在导出报表时重新运行一次报表。
1. 当报表第一次运行时,Page Header 的 Visible 属性都设置为 true来显示 Page Header。
2. 在我们需要导出报表到 Excel 文件时,重新运行一次报表,设置ShowPageHeaderOnFirstPageOnly 为 true,从而实现Page Header 仅展示一次的效果。
下面为示例代码:
- DataFieldExpressionsReport rpt = new DataFieldExpressionsReport();
- rpt.ShowPageHeaderOnFirstPageOnly = false;
- rpt.Run();
- viewer1.Document = rpt.Document;
- DataFieldExpressionsReport rpt1 = new DataFieldExpressionsReport();
- rpt1.ShowPageHeaderOnFirstPageOnly = true;
- rpt1.Run();
- XlsExport exp = new XlsExport();
- exp.Export(rpt1.Document, "Test.xls");
- System.Diagnostics.Process.Start("Test.xls");
复制代码 |
|