2010-09-17 14 views
3

J'ai besoin d'exporter au format Excel et csv dans les rapports jasper. pour Excel j'ai essayé en créant classe personnalisée (en utilisant API), mais il n'est pas l'exportation, la chose est enregistrer et annuler la fenêtre contextuelle arrive avec le type de fichier inconnu ..comment exporter au format Excel et csv dans le rapport Jasper

aucune idée pourquoi cela se passe-t-il?

Répondre

6

Utilisé comme JRXlsExporter pour exporter vers XSL et JRCsvExporter pour CSV.

Il ne devrait pas être nécessaire de créer une classe personnalisée dans la plupart des cas.

Modifier

La classe est stockée dans le pot poi-3,5-FINAL-20090928.jar, qui devrait être situer dans votre "iReportInstallationFolder" \ modules \ ext \

Pour moi, c'est C:\Program Files\Jaspersoft\iReport-3.7.4\ireport\modules\ext\

Le nom pourrait être différent mais devrait être poi-3.5-FINAL - *. Jar.

Faites-le inclus dans votre classpath et ça devrait aller.

Vous pouvez télécharger le pot à partir de la page d'accueil Apache Poi.

Voici un lien vers le pot je de leur site http://archive.apache.org/dist/poi/release/bin/poi-bin-3.5-FINAL-20090928.tar.gz

+0

@Gordon .. Je suis arrivé à l'exception comme « Uncaught exception jeté dans l'un des services méthodes de la servlet: InvestorConfirmServlet Exception levée: java.lang.NoClassDefFoundError: org.apache.poi.hssf.usermodel.HSSFCellStyle ".. J'ai mis le fichier .jar également dans le classpath. mais même ça jette une erreur ... – Manu

+0

@Manu J'ai mis à jour ma réponse. J'espère que ça devrait aider. – Gordon

+0

pouvez-vous me donner le lien pour télécharger les fichiers jar ... – Manu

0

Pour ceux qui utilisent JRCsvExporter, le code suivant peut être utile. Donner une structure d'échantillon.

Classe de service Spring Framework (CSVExportService.java):

public JasperPrint getRawData(String empIds) { 

JasperPrint jp = null; 
String reportName = "Employee Report"; 

// use your own method to get empList 
// eg: List<Employee> empList = empServiceClass.findByEmpIds(empIds); 
JRDataSource jrDataSource = new JRBeanCollectionDataSource(empList); 

// build your report 
DynamicReportBuilder dynamicReportBuilder = new DynamicReportBuilder(); 
dynamicReportBuilder.setAllowDetailSplit(false); 
// configure your report with few more options here 

// create columns 
ColumnBuilder columnBuilderName = ColumnBuilder.getNew(); 
columnBuilderName.setTitle("Emp Name"); 
columnBuilderName.setWidth(300); 
columnBuilderName.setFixedWidth(true); 
columnBuilderName.setColumnProperty("name", String.class.getName()); 
dynamicReportBuilder.addColumn(columnBuilderName.build()); 

DynamicReport dynamicReport = dynamicReportBuilder.build(); 

jp = DynamicJasperHelper.generateJasperPrint(dynamicReport, new ClassicLayoutManager(), jrDataSource, new HashMap<String, Object>()); 
return jp; 
} 

Spring Framework Classe contrôleur:

public void exportToCSV(@PathVariable String empIds){ 
    JasperPrint jp = null; 
    jp = csvExportService.getRawData(empIds); 
    response.setContentType("text/csv"); 
    response.setHeader("Content-Disposition", "attachment; filename="EMPRawData.csv"); 
    OutputStream out = response.getOutputStream(); 
    JRCsvExporter exporterCSV = new JRCsvExporter(); 
    exporterCSV.setParameter(JRExporterParameter.JASPER_PRINT, jp); 
    exporterCSV.setParameter(JRExporterParameter.OUTPUT_STREAM, out); 
    exporterCSV.exportReport(); 

    out.flush(); 
} 
+0

Que faire si je n'ai pas de réponse (HttpServletResponse) dans mon application? comment créer le fichier? – bynu022

Questions connexes