【Stimulsoft Reports Java教程】複製報表之間的元件
阿新 • • 發佈:2018-11-20
此示例顯示如何在不同報表之間複製相同元件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*", ""))); }