Trước đó tôi đã sử dụng Apache POI 2.5.1 để xuất tệp .xls
sử dụng HSSFWorkbook
. Với cập nhật Apache POI thành 3.13 Tôi đang xuất .xlsx
tệp bằng cách sử dụng SXSSFWorkbook
nhưng tệp xuất bị hỏng.Xuất xlsx bằng apache poi 3.13 trên weblogic: Định dạng tệp hoặc phần mở rộng không hợp lệ
MS Excel không thể mở tệp với Định dạng tệp hoặc tiện ích không hợp lệ lỗi.
Lưu ý rằng vấn đề này tôi chỉ gặp phải trên máy chủ WebLogic
, nó hoạt động tốt với JBoss
.
Bất kỳ ai cũng có thể giúp những gì tôi đang làm sai ở đây?
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);
}
nỗ lực không thành công:
- Cập nhật loại mime trong tiêu đề phản hồi từ
application/vnd.ms-excel
đểvnd.openxmlformats-officedocument.spreadsheetml.sheet
- Added
xlsx=vnd.openxmlformats-officedocument.spreadsheetml.sheet
trong tùy chỉnh tập tin bản đồ kịch câm cho WebLogic
Phiên bản weblog nào? 12.1.3? – Slettal
@Slettal 10.3.5.0 –
được, mã của bạn hoạt động tốt mà không gặp sự cố gì trên WL 12.1.3. Không cài đặt 10.3.5: ( – Slettal