1. 程式人生 > >【Stimulsoft Reports Java教程】複製報表之間的元件

【Stimulsoft Reports Java教程】複製報表之間的元件

下載Stimulsoft Reports Java最新版本

此示例顯示如何在不同報表之間複製相同元件StiPage,StiHeader等。例如,讓我們使用兩個報表OriginalReport和CustomReport。

首先,您需要從檔案反序列化報表。

StiReport originalReport = StiSerializeManager.deserializeReport(
    StiResourceUtil.getStream("/com/stimulsoft/samples/OriginalReport.mrt"));
StiReport customerReport = StiSerializeManager.deserializeReport(
    StiResourceUtil.getStream("/com/stimulsoft/samples/CustomReport.mrt"));

然後,您可以複製元件。為此,可以使用序列化。

StiHeaderBand originalHeader = (StiHeaderBand) originalReport.getComponents().get("HeaderBand1");
int originalIndex = originalHeader.getPage().getComponents().indexOf(originalHeader);
originalHeader.getPage().getComponents().remove(originalIndex);
 
StiHeaderBand customerHeader = (StiHeaderBand) customerReport.getComponents().get("HeaderBand1");
String originalHeaderStr = StiSerializerControler.serializedObjectAsString(customerHeader);
StiHeaderBand newCustomerHeader = new StiHeaderBand();
StiDeserializerControler.deserializeFromString(originalHeaderStr, newCustomerHeader);
newCustomerHeader.setPage(originalReport.getPages().get(0));
originalReport.getPages().get(0).getComponents().add(originalIndex, newCustomerHeader);
newCustomerHeader.setName(StiNameCreation.createName(originalReport, "HeaderBand"));
for (StiComponent component : newCustomerHeader.getComponents()) {
    component.setPage(originalReport.getPages().get(0));
    component.setParent(newCustomerHeader);
    component.setName(StiNameCreation.createName(originalReport, component.getName().replaceAll("\\d*", "")));
}

檢視原文,下載示例