Совместимость с Apache-poi, версией jxls-poiJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Совместимость с Apache-poi, версией jxls-poi

Сообщение Anonymous »

У меня вопрос относительно Java Excel.
Я обновил версию Apache-poi с 3.17 до 4.1.2, но загрузка Excel не работает.
И поскольку существующее ядро ​​jxls было перенесено в org.jxls, jxls-core было удалено, а версия jxls была обновлена ​​до 2.10.0.
Это связанный код
pom.xml

org.apache.poi
poi-ooxml
4.1.2


org.apache.poi
poi-ooxml-schemas
4.1.2


org.jxls
jxls
2.8.1


commons-logging
commons-logging


ch.qos.logback
logback-core




org.jxls
jxls-poi
2.10.0


ch.qos.logback
logback-core




код
public void download(HttpServletRequest request, HttpServletResponse response, Map beans, String filename, String templateFile) {
InputStream is = null;
OutputStream os = null;
try {
Resources.setCharset(StandardCharsets.UTF_8);
is = new BufferedInputStream(Resources.getResourceAsStream("excel_templates/" + templateFile));
PoiTransformer transformer = PoiTransformer.createTransformer(is);

// Map을 Context 객체로 변환
Context context = new Context(beans);
JxlsHelper.getInstance().processTemplate(context, transformer);
Workbook resultWorkbook = transformer.getWorkbook();

// 응답 헤더 및 Content-Type 설정
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + ".xlsx\"");

// OutputStream 초기화
os = response.getOutputStream();

// 워크북을 OutputStream에 씀
resultWorkbook.write(os);
os.flush(); // 버퍼 비우기
System.out.println("10");
} catch (Exception e) {
logger.error("Error during download: " + e.getMessage());
} finally {
// 자원 정리
try {
if (is != null) is.close();
if (os != null) os.close();
} catch (IOException e) {
logger.error("Error closing streams: " + e.getMessage());
}
}
}

2024-10-07 16:27:09.764 [http-nio-8080-exec-7] ERROR com.sgt.appm.excel.MakeExcel - Error during download: Cannot write a workbook with an uninitialized output stream
удалить зависимости

net.sf.jxls
jxls-core
1.0.6


public void download(HttpServletRequest request, HttpServletResponse response, Map beans, String filename, String templateFile) {
try {
Resources.setCharset(Charset.forName("UTF-8"));
InputStream is = new BufferedInputStream(Resources.getResourceAsStream("excel_templates/" + templateFile));
XLSTransformer transformer = new XLSTransformer();
Workbook resultWorkbook = transformer.transformXLS(is, beans);
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + ".xlsx\"");
OutputStream os = response.getOutputStream();
resultWorkbook.write(os);
is.close();
resultWorkbook.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... compatible
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»