2016-04-07 7 views
1

Ich versuche, JXLS PoiTransformer zu verwenden, um einen wirklich großen Bericht zu erzeugen; Das Problem ist, dass alle Beispiele, die ich bisher gefunden habe, eine Excel-Datei mit zwei Blättern erzeugen, von denen eines das Original, unmodifiziert, ein Template und ein anderes das tatsächliche Ergebnis enthält. Gibt es eine Möglichkeit, das erste Blatt wegzulassen und nur das Ergebnis zu behalten?JXLS + SXSSF - Wie erstellt man eine Excel-Datei ohne die Vorlage zusammen mit dem tatsächlich generierten Bericht?

Dies ist mein aktueller Code:

 PoiContext context = new PoiContext(); 
     context.putVar("params", this.montaParametros(rel, filtro, opcoes, dados)); 
     context.putVar("dados", this.converteDados(rel, dados)); 

     Workbook template = WorkbookFactory.create(resource.getInputStream()); 
     PoiTransformer transformer = PoiTransformer.createSxssfTransformer(template, 5, false); 

     AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer); 
     List<Area> xlsAreaList = areaBuilder.build(); 

     Area xlsArea = xlsAreaList.get(0); 
     // xlsArea.applyAt(new CellRef("Template!A1"), context); // Tried forcing it to use the original sheet as the output sheet, but it does not overwrite things properly 
     xlsArea.applyAt(new CellRef("Result!A1"), context); // Writes into a new sheet, but that's not what is desired 

     Workbook processado = transformer.getWorkbook(); 
     processado.write(out); 

Antwort

2

Okay, dumm von mir, es scheint, ich kann nur die unerwünschten Blätter entfernen, bevor auf der Festplatte zu schreiben; Ich dachte, SXSSF hätte das irgendwie behindert, aber es scheint zu funktionieren: