Daha önce .xls
dosyasını HSSFWorkbook
kullanarak vermek için Apache POI 2.5.1 kullanıyordum. Güncelleştirilmiş Apache ile POI 3,13 Ben SXSSFWorkbook
ama ihracat bozuk dosyayı kullanarak .xlsx
dosya ihracat ediyorum.Weblogic'te apache poi 3.13 kullanarak xlsx dosyası dışa aktarılıyor: Dosya biçimi veya uzantısı geçerli değil
MS Excel, dosya açamadı Dosya biçimi ya da uzantısı geçerli değil.
Bu sorunun yalnızca WebLogic
sunucusuna baktığımı unutmayın, JBoss
ile düzgün çalışıyor.
Burada yanlış yaptığım şeylere kimse yardım edebilir mi?
Kodu:
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);
}
Başarısız denemeler:
-
WebLogic'te için özel mim haritalama dosyasında
- için
application/vnd.ms-excel
gelen cevap başlığında - Güncelleme mim tipi Eklendi
xlsx=vnd.openxmlformats-officedocument.spreadsheetml.sheet
vnd.openxmlformats-officedocument.spreadsheetml.sheet
:
burada çeşitli türleri arasında bazı tartışmalar vardır? 12.1.3? – Slettal
@Slettal, onun 10.3.5.0 –
tamam, iyi kodunuz WL 12.1.3 üzerinde sorunsuz çalışıyor. Bir 10.3.5 yüklemeniz yok :( – Slettal