Excel-Zelle-Format in JasperReport-Bericht
Arbeite ich auf JasperReport Berichten, erzeugt Excel-Datei. Für einige Grund mein Handy Formate/Typen sind nicht wie Sie sein sollten. Ich habe zum Beispiel Date-Objekt in meine Zelle, aber wenn ich generieren, die Excel-Datei setzt es-Zell-Typ, - Nummer, - oder Long-Datentyp ist text in der Zelle, aber die Zelle das format "Zahl" und auch, wenn der Benutzer Bearbeiten-Datum-Zelle (zum Beispiel mit Datum 11/02/2012 geändert 11/03/2012) konvertiert, Datum, Anzahl (41581.00).
Hier ist mein code (nur es-Ausgänge im popup-stream an den browser-Fenster mit dem Bericht):
public void generateXLSPopup(String tmpltFileLocation, Map<String, Object> params, Collection vo) {
log.fine("ReportEngine: Start Generate XLS Popup Report Function!");
Filename f = new Filename(tmpltFileLocation);
String xlsFileName = f.getFileName() + "_" + sDateFormated + ".xlsx";
try {
JasperPrint jasperPrint = getJRPrint(tmpltFileLocation, params, new JRBeanCollectionDataSource(vo));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JRXlsxExporter exporter = getCommonXlsxExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, baos); //fill byte array output stream
exporter.exportReport();
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-disposition", "attachment; filename=" + xlsFileName);
response.setContentLength(baos.size());
response.getOutputStream().write(baos.toByteArray());
context.responseComplete();
} catch (Exception ex) {
ex.printStackTrace();
}
log.fine("ReportEngine: Finish Generate XLS Popup Report Function!");
}
private JRXlsxExporter getCommonXlsxExporter(){
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
exporter.setParameter(JExcelApiExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
//exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
return exporter;
}
Und hier ist das Beispiel der ersten Zeilen in meinem jasper-report-xml-Datei:
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.Long"><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="200" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{emsProdNo}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="100" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{courseName}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" pattern="MMMMM dd, yyyy" isBlankWhenNull="true">
<reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="300" y="0" width="98" height="20"/>
<textElement>
<font isUnderline="true"/>
</textElement>
<textFieldExpression class="java.util.Date"><![CDATA[$F{startDate}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement style="alternateStyle" stretchType="RelativeToBandHeight" x="474" y="0" width="81" height="20"/>
<textElement/>
<textFieldExpression class="java.lang.String"><![CDATA[$F{endDateStr}]]></textFieldExpression>
</textField>
(Bitte frag mich nicht warum, ich bin zu generieren jasperreport-Vorlage-Datei on-the-fly, das ist, wie ich es brauche.)
InformationsquelleAutor Maksim | 2010-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der neuen version von
JasperReports
der parameternet.sf.jasperreports.export.xls.pattern
eingeführt wurde.Sample:
Informationen zu diesem parameter ist hier. Das Beispiel der Verwendung ist hier.
InformationsquelleAutor Alex K
Das problem ist/war, denn ich bin mit POI 3.5 und JasperReports 3.7.0 und Generierung von XLSX-Excel-format. POI 3.5 wird unterstützt JasperReports 3.7.1 (oder einfach nur snapshot aus dem SVN). Also, was Tat ich ich ging zurück zu den alten Excel-Typ - (xls -) Datei und es funktionierte perfekt.
InformationsquelleAutor Maksim
Nur zur info
oder
IS_DETECT_CELL_TYPE, Boolean.TRUE
ist das eine, die macht das Datum zu ändern auf Anzahl .InformationsquelleAutor Shourjya
JasperReports version 4.1.1 net.sf.jasperreports.export.xls.Muster eingeführt wurde.
überprüfen Sie hier
Eigenschaften Ausdrücken
Eigenschaften name >> net.sf.jasperreports.export.xls.Muster
Eigenschaften Wert >> @ text, " yyyy-mm-dd für das Datum-format, #,##0.00;-#,##0.00 für die Währung, usw....
InformationsquelleAutor Rex