BIRT4.4导出xlsx文件单sheet

本文介绍如何在BIRT报表设计器中配置参数,确保导出的Excel文件为单sheet形式,适用于Excel2007及以上版本。通过调整Table控件的属性及使用API动态修改模板,可以避免数据自动分页。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值