BIRT4.4导出xlsx文件单sheet

来源:互联网 发布:手机屏幕画笔软件 编辑:程序博客网 时间:2024/06/08 06:30

Birt报表设计器文件导出Excel文件时,不做多个sheet页的设定,如果不做特殊设定,在导出的Excel文件中,系统会自动分成多sheet页。

如果用户的设计器文件高度小于50in,则按用户设定的高度显示数据;否则,则按50的高度分页数据。Birt4.4支持导出Excel2007格式即xlsx格式文件,该格式文件的好处是能够在一个sheet中存储超过六万条数据,而Excel2003格式即xls格式若导出大数据会将自动分成多个sheet,这在客户浏览数据时非常不方便。

下面介绍实现单sheet存储所有数据的修改办法:

  1. 鼠标点击Table控制,找到table Detail行(用于循环数据的那行,不是汇总或者小计的那行)。然后在master page 属性卡上点击左侧的general,选择custom项,设定其height属性值为一个大的数值。这个值最大限度是13888。

  2. 选中表格,点击layout选项卡,选择page break 将 其中的before、after、Inside中的值都设置为Avoid。并且将Page breakInterval的数值填为0。

经过这样的设置,生成的Excel文件就不会自动分sheet页了。

当然程序很多时候并不能把模版写死,可能Excel方式不需要分页显示,但是Pdf方式获知其他的方式需要分页。
这就需要通过api调整参数,动态调整模版里面的参数。

        // Open the report design        //design = reportEngine.openReportDesign(rptTemplateUrl);        // Get report body design        SlotHandle slotHandle = design.getDesignHandle().getModuleHandle()                        .getSlot(IInternalReportDesignModel.BODY_SLOT);        Iterator<DesignElementHandle> slotIter = slotHandle.iterator();        while (slotIter.hasNext()) {            DesignElementHandle handle = slotIter.next();               if ("Table".equals(handle.getElement().getDefn().getName())) {                                    handle.setProperty("pageBreakAfter", DesignChoiceConstants.PAGE_BREAK_AFTER_AVOID);                handle.setProperty("pageBreakBefore", DesignChoiceConstants.PAGE_BREAK_BEFORE_AVOID);                handle.setProperty("pageBreakInside", DesignChoiceConstants.PAGE_BREAK_INSIDE_AVOID);                handle.setProperty("pageBreakInterval", 0);            }                              }        // 注意:这里面的高度调整,在前面设置了不分页的情况下,没有什么特别的效果,但是Excel高度支持        // 13888,超过这个高度估计也会报错。没有试过        SlotHandle slotMasterPageHandle = design.getDesignHandle().getModuleHandle().getMasterPages();        Iterator<SimpleMasterPageHandle> pageHandleIter = slotMasterPageHandle.iterator();        while (pageHandleIter.hasNext()) {            SimpleMasterPageHandle simpleMasterHandle = pageHandleIter.next();                                         simpleMasterHandle.setOrientation(DesignChoiceConstants.PAGE_SIZE_CUSTOM);            simpleMasterHandle.setPageType(DesignChoiceConstants.VALUE_FORMAT_TYPE_CUSTOM);            simpleMasterHandle.setProperty("height", "10000in");                      }

上面2种方式都可以支持xlsx导出为单sheet.

参考文章:

BIRT4.4导出xlsx文件单sheet 对应百度文库里面的一篇文档。


BIRT4.4.3 底层API

0 0