2014-06-09 6 views
34

ich diesen Code haben eine JasperReprot zu XLS exportieren:Jasper 5.6: JRXlsExporter.setParameter veraltet

 JasperPrint jprint=JasperFillManager.fillReport(expRpg, null, new JRBeanCollectionDataSource(datalist)); 
     JRXlsExporter exporter = new JRXlsExporter(); 
     exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jprint); 
     exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, outStream); 
     exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); 
     exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); 
     exporter.exportReport(); 

Upgrade auf Jasper 5.6 alle setParameter als „veraltet“ markiert, und ich kann keine Dokumentation finden passe diesen Code an.

Wie exportiert man einen Bericht nach xls mit JasperReports 5.6?

+2

sollten Sie lesen die [Entwickler bemerken] (http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JRAbstractExporter.html#setParameter%28net.sf.jasperreports.engine.JRExporterParameter,% 20java.lang.Object% 29): 'Ersetzt durch setE xporterInput (ExporterInput), setConfiguration (ExporterConfiguration), setConfiguration (ReportExportConfiguration) und setExporterOutput (ExporterOutput) '. –

+0

Sie können auch eine Menge Probe in * JR * Paket finden –

Antwort

62

JRExporter wurde in 5.6 veraltet. Sie führten eine neue Schnittstelle Exporter ein und rüsteten alle Exporteure nach ExporterInput, ReportExportConfiguration, ExporterConfiguration, ExporterOutput um. unter Verwendung der oben genannten Klassen oder deren Kindklassen PDF-Export Beispiel siehe unten Link

http://jasperreports.sourceforge.net/api/net/sf/jasperreports/export/Exporter.html

Dies bedeutet, dass statt setParameter, müssen Sie Konfiguration erstellen. Excel-Export sollte gleiche Methodik folgen

JRPdfExporter exporter = new JRPdfExporter(); 

exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); 
exporter.setExporterOutput(outputStream); 
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration(); 
exporter.setConfiguration(configuration); 

exporter.exportReport(); 

Excel Pendant

JRXlsExporter exporter = new JRXlsExporter(); 
exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); 
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(destFile)); 
SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration(); 
configuration.setOnePagePerSheet(true); 
configuration.setDetectCellType(true); 
configuration.setCollapseRowSpan(false); 
exporter.setConfiguration(configuration); 

exporter.exportReport(); 

SimpleXlsReportConfiguration wird Excel-Export-bezogene Konfiguration hat. Sollwerte wie pro Ihre Anforderung

+0

Für den Ausgangsstrom, wenn Sie eine Klasse wie 'ByteArrayOutputStream' verwenden, sollten Sie dies tun: 'exporter.setExporterOutput (new SimpleOutputStreamExporterOutput (os));' – CorayThan

+0

eine Zeile "exporteur.exportReport();" fehlt für das Excel-Pendant – karansky

2

Dank der oben genannten Code, hier ist mein Code: Hinweis: Export mit iReport, iReport 6.0, Java 7

Map<String, Object> parametro = new HashMap<String, Object>(); 
       parametro.put("USUARIO", UConstante.NAME_MINISTERIO_USER); 
       parametro.put("RUTA_LOGO", PuenteFile.getRutaFiles(FacesContext.getCurrentInstance(), PuenteFile.RUTA_IMG_LOGO)); 
       parametro.put("PATH_SYSTEM", rutaFileSystemHD); 
       parametro.put("WHERE_DATA", WHERE_REGISTRO); 
       parametro.put("WHERE_PROYECTO_USUARIO", WHERE_PROYECTO_USUARIO); 
       parametro.put("WHERE_ZONA", WHERE_ZONA); 
       parametro.put("NAME_APP", RutaFile.NAME_APP); 
       parametro.put("ID_USUARIO", getUsuario().getId()); 
       parametro.put("ID_PROYECTO", beanProyecto.getId()); 
       parametro.put("SUBREPORT_DIR", SUBREPORT_DIR); 

       System.out.println(">>>>>> PARAMETROS :" + parametro.toString()); 

       try { 
        JasperPrint jasperPrint = JasperFillManager.fillReport(path, parametro, PgConnector.getConexion()); 
        JRXlsExporter xlsExporter = new JRXlsExporter(); 
        xlsExporter.setExporterInput(new SimpleExporterInput(jasperPrint)); 
        xlsExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(PuenteFile.getRutaFiles(FacesContext.getCurrentInstance(), PuenteFile.RUTA_REPORT_FILE) + nameExcel)); 
        SimpleXlsReportConfiguration xlsReportConfiguration = new SimpleXlsReportConfiguration(); 
        SimpleXlsExporterConfiguration xlsExporterConfiguration = new SimpleXlsExporterConfiguration(); 
        xlsReportConfiguration.setOnePagePerSheet(true); 
        xlsReportConfiguration.setRemoveEmptySpaceBetweenRows(false); 
        xlsReportConfiguration.setDetectCellType(true); 
        xlsReportConfiguration.setWhitePageBackground(false); 
        xlsExporter.setConfiguration(xlsReportConfiguration); 
        xlsExporter.exportReport(); 

       } catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
0

Hier treffen ist mein CODE:

String sourceFileName = "./jasper_report_template.jasper"; 
Map parameters = new HashMap(); 
String printFileName = null; 
try { 
     printFileName = JasperFillManager.fillReportToFile(sourceFileName, parameters, beanArrayDataSource); 
     if(printFileName != null){ 
      //JasperPrintManager.printReport(printFileName, true); 
      /** 1- export to PDF*/ 
      JasperExportManager.exportReportToPdfFile(printFileName, 
         "C://Users/zanderkong/Desktop/sample_report.pdf"); 
      /**3- export to Excel sheet*/ 
      RXlsExporter xlsExporter = new JRXlsExporter(); 
      xlsExporter.setExporterInput(new SimpleExporterInput(printFileName)); 
      xlsExporter.setExporterOutput(new SimpleOutputStreamExporterOutput("C://Users/zanderkong/Desktop/sample_report.xls")); 
      SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration(); 
      configuration.setOnePagePerSheet(true); 
      configuration.setDetectCellType(true); 
      configuration.setCollapseRowSpan(false); 
      xlsExporter.setConfiguration(configuration); 
      xlsExporter.exportReport(); 
     } 
     } catch (JRException e) { 
      e.printStackTrace(); 
      }