jasperreports - export excel

j'ai déjà réussi à exporter un fichier pdf rapport avec jasperreports mais je ne peut pas exporter en format excel.

La xls fichier de sortie de mon programme produit ne s'ouvre pas avec Excel(corrompu), et est totalement vide, si je l'ouvre avec LibreOffice.

Ici est la jrxml code(un exemple de test):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="xls" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d8281a37-1a28-43e6-824c-0d39b69f7d23">
<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
<property name="net.sf.jasperreports.export.xls.wrap.text" value="false"/>
<property name="net.sf.jasperreports.export.xls.auto.fit.row" value="true"/>
<property name="net.sf.jasperreports.export.xls.auto.fit.column" value="true"/>
<style name="table">
<box>
<pen lineWidth="1.0" lineColor="#000000"/>
</box>
</style>
<style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="Table Dataset 1" uuid="3897caef-b047-4ba2-8b62-bd46ec43553d"/>
<field name="credit" class="java.lang.Double"/>
<field name="time" class="java.lang.String"/>
<title>
<band height="50"/>
</title>
<pageHeader>
<band height="50">
<staticText>
<reportElement x="0" y="30" width="100" height="20" uuid="4a091ece-05dc-48a7-8390-bf3722715ca8"/>
<text><![CDATA[Nikos]]></text>
</staticText>
</band>
</pageHeader>
<columnHeader>
<band height="50">
<staticText>
<reportElement x="0" y="30" width="100" height="20" uuid="39c43e60-ee74-4373-bafb-b78647870be5"/>
<text><![CDATA[Nikos]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="153">
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="ec837765-6e78-417f-b6ea-1cec760fba54"/>
<textFieldExpression><![CDATA[$F{credit}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20" uuid="23e21ff0-e776-4a04-a5d0-a4188694446e"/>
<textFieldExpression><![CDATA[$F{time}]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band height="229">
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="a5015437-e944-41c1-88bf-9a0d9f88e2d0"/>
<textFieldExpression><![CDATA[$F{credit}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20" uuid="066120ca-8df1-40fb-8dea-b93bf5ef30a9"/>
<textFieldExpression><![CDATA[$F{time}]]></textFieldExpression>
</textField>
</band>
</summary>

Et c'est mon programme java (contient aussi pdf succès à l'exportation):

public static void main(String[] args) {
String inPdfFileName = "src/test/javabeans.jasper";
String inXlsFileName = "src/test/xls.jasper";
String outPdfName = "test.pdf";
String outXlsName = "test.xls";
HashMap pdfParams = new HashMap();
HashMap xlsParams = new HashMap();
Collection<FundBean> fundbeans = FundBeanFactory.getBeanCollection();
pdfParams.put("HighTime", FundBeanFactory.getMax().getTime());
pdfParams.put("LowTime", FundBeanFactory.getMin().getTime());
pdfParams.put("Highest", FundBeanFactory.getMax().getCredit().toString());
pdfParams.put("Lowest", FundBeanFactory.getMin().getCredit().toString());
JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(fundbeans);
try {
JasperPrint PdfPrint = JasperFillManager.fillReport(
inPdfFileName,
pdfParams,
beanCollectionDataSource);
JasperPrint xlsPrint = JasperFillManager.fillReport(
inXlsFileName,
xlsParams,
beanCollectionDataSource);
JRPdfExporter pdfExporter = new JRPdfExporter();
pdfExporter.setExporterInput(new SimpleExporterInput(PdfPrint));
pdfExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outPdfName));
SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
configuration.setCreatingBatchModeBookmarks(true);
pdfExporter.setConfiguration(configuration);
pdfExporter.exportReport();
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setExporterInput(new SimpleExporterInput(xlsPrint));
xlsExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outXlsName));
SimpleXlsReportConfiguration xlsReportConfiguration = new SimpleXlsReportConfiguration();
xlsReportConfiguration.setOnePagePerSheet(false);
xlsReportConfiguration.setRemoveEmptySpaceBetweenRows(true);
xlsReportConfiguration.setDetectCellType(false);
xlsReportConfiguration.setWhitePageBackground(false);
xlsExporter.setConfiguration(xlsReportConfiguration);
xlsExporter.exportReport();
} catch (JRException e) {
e.printStackTrace();
}
}

Quand j'ai aperçu au format xls avec iReport Designer-je obtenir le résultat souhaité.
Donc je suppose que le problème vient de mon code java...

  • double possible de contenu Illisible message avec Jasper et .xlsx
  • Merci beaucoup, cela m'a aidé à comprendre où est le problème, les deux champs n'obtenez pas de données à partir de JRBeanCollection.Je suis maintenant en mesure d'ouvrir le fichier xls, mais je ne peux pas comprendre pourquoi les champs ne sont pas remplies.Dans le code ci-dessus, le rapport en format pdf se remplit de la même javabean,fonctionne bien.Pouvez-vous aider?
  • Vous fève de collection peut être vide ou les haricots ne suivent pas le Java bean conventions: stackoverflow.com/questions/1973073/what-is-a-java-bean
  • Ce n'est pas le problème, je suppose.J'utilise le même javaBean et la même méthode pour la fève de collection à la fois pour l'exportateur de Pdf et Xls exportateur.Le fichier Pdf de sortie se remplit, xls rapport n'a pas.J'ai essayé beaucoup de choses différentes,scanné le code plusieurs fois..avez-vous une autre idée?
  • Il pourrait être une incompatibilité de type. 1) Le rapport de champ est déclaré de type String - essayez d'utiliser un type datetime. 2) Aussi, rendre le champ de correspondance de la classe champ d'expression de la classe. Dès maintenant vos deux champs sont l'expression de la classe String. 3) Ajouter cette propriété à votre rapport jasperreports.sourceforge.net/... avec la valeur true
  • merci pour vos réponses.Toujours le problème reste..j'avais net.sf.jasperreports.à l'exportation.xls.détecter.cellule.type déjà défini à true, j'ai également déposé classe -expression de correspondance de la classe.Toujours pas résolu..

InformationsquelleAutor | 2015-07-28