BIRT4.4导出xlsx文件单sheet

BIRT4.4导出xlsx文件单sheet

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

如果用户的设计器文件高度小于50in,则按用户设定的高度显示数据;否则,则按50的高度分页数据。

Birt4.4支持导出Excel2007格式即xlsx格式文件,该格式文件的好处是能够在一个sheet中存储超过六万条数据,

而Excel2003格式即xls格式若导出大数据会将自动分成多个sheet,这在客户浏览数据时非常不方便。

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

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

选中表格,点击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 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 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

相关推荐

《卓越之剑》52级公会任务
base365

《卓越之剑》52级公会任务

📅 09-30 👁️ 5970
2025珊瑚绒毯十大品牌排名
你们的365还进得去吗

2025珊瑚绒毯十大品牌排名

📅 09-04 👁️ 4505
司马迁评商鞅“天资刻薄”,那么,商鞅到底是一个怎样的人呢?