Früher habe ich mit Apache POI 2.5.1 .xls
Datei mit HSSFWorkbook
exportieren. Mit aktualisierten Apache POI zu 3.13 exportiere ich .xlsx
Datei mit SXSSFWorkbook
, aber seine Datei exportiert.Exportieren von XLSX mit Apache Poi 3.13 auf Weblogic: Dateiformat oder Erweiterung nicht gültig
MS Excel konnte Datei mit nicht öffnen Dateiformat oder Erweiterung nicht gültig Fehler.
Beachten Sie, dass dieses Problem ich nur auf WebLogic
Server gegenüberstehen, funktioniert es gut mit JBoss
.
Jeder kann helfen, was ich hier falsch mache?
Code:
List<JRField> fields = ds.getFields();
SXSSFWorkbook wb = new SXSSFWorkbook();
SXSSFSheet sheet = wb.createSheet("Sheet1");
try {
CellStyle cellStyle = wb.createCellStyle();
CellStyle cellStyleColName = wb.createCellStyle();
CellStyle cellStyleTitle = wb.createCellStyle();
Font boldFont = wb.createFont();
boldFont.setFontHeightInPoints((short)16);
boldFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// Cell Style for body
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
cellStyle.setWrapText(true);
// Cell Style for Column Names
cellStyleColName.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
cellStyleColName.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleColName.setBorderTop(HSSFCellStyle.BORDER_MEDIUM); // single line border
cellStyleColName.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM); // single line border
// Cell Style for Title
cellStyleTitle.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleTitle.setFont(boldFont);
// Creating Title Row
Row row1 = sheet.createRow((short) 0);
// Creating the Title line
Cell cell1 = row1.createCell((short) 0);
cell1.setCellValue("Demo Title");
cell1.setCellStyle(cellStyleTitle);
// Title Region
CellRangeAddress regionTitle = new CellRangeAddress( (short) 0, // From Row
(short) 0, // From Col
(short) 0, // To Row
(short) (this.displayCols.size()-1) // To Col
);
sheet.addMergedRegion(regionTitle);
// Column Name Row
int j =0;
Row row2 = sheet.createRow((short) 1);
for (ReportColumn col : this.displayCols)
{
Cell cell2 = row2.createCell((short) j++);
cell2.setCellValue(col.getDisplayName());
cell2.setCellStyle(cellStyleColName);
}
int i =2;
while (ds.next()) {
Row rows = sheet.createRow((short) 0 + i);
int k = 0;
for (JRField field : fields) {
String fieldAsString = (ds.getFieldValue(field) != null ? ds.getFieldValue(field).toString():null);
Cell cell = rows.createCell((short) k++);
cell.setCellStyle(cellStyle);
cell.setCellValue(fieldAsString);
}
i++;
if (i > RECORD_LIMIT_FROM_POI){
log.info("Row limit from poi reached #1048576 and exported data is truncated.");
break;
}
}
wb.write(os);
}
catch (Exception e) {
log.error("error in createXlsFile method", e);
}
Fehlversuche:
- Aktualisiert Mime-Typ in Antwort-Header von
application/vnd.ms-excel
zuvnd.openxmlformats-officedocument.spreadsheetml.sheet
- Added
xlsx=vnd.openxmlformats-officedocument.spreadsheetml.sheet
in benutzerdefinierten Mime-Zuordnungsdatei für WebLogic
Welche Version weblogic? 12.1.3? – Slettal
@Slettal sein 10.3.5.0 –
okay, gut Ihr Code funktioniert ohne Probleme auf einer WL 12.1.3. Keine 10.3.5 Installation :( – Slettal