【发布时间】:2014-05-12 09:00:47
【问题描述】:
我正在读取数据库记录并在内存中创建 XSSFWorksbook。
完成后,我将编写此工作簿以压缩输出流。 zip 已正确创建,但 xlsx 文件未生成属性。它代替 excel 创建文件夹和文件,如 _rel、工作表、sharedStrings、样式和 workbook.xml
//Read records from db and create workbook
public static XSSFWorkbook buildReportDocuement(int reportIndex,
List<Object> result) throws IOException {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet excelSheet = workbook.createSheet(REPORT_NAME_PREFIX);
setExcelHeader(excelSheet);
processActivityReportData(result, excelSheet);
return workbook;
}
//reading worksbooks into bytearray and addign to in memory zip files
public static ByteArrayOutputStream zipWorkbooks(
List<XSSFWorkbook> workbooks) throws IOException {
int workBookIndex = 1;
ByteArrayOutputStream byteOutputStream = null;
FileOutputStream outputStream = new FileOutputStream("Reports");
ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream);
ZipEntry zipEntry = null;
for (XSSFWorkbook current : workbooks) {
zipEntry = new ZipEntry(REPORT_PREFIX + workBookIndex
+ EXCEL_EXTENSION);
zipOutputStream.putNextEntry(zipEntry);
byteOutputStream = new ByteArrayOutputStream();
current.write(byteOutputStream);
if (byteOutputStream != null) {
zipEntry.setSize(byteOutputStream.size());
zipOutputStream.write(byteOutputStream.toByteArray());
zipOutputStream.closeEntry();
}
}
zipOutputStream.close();
return byteOutputStream;
}
我不应该将任何文件写入文件系统。请指导我。
【问题讨论】: