POI Сохранение рабочей книги создает пустой файлJAVA

Программисты JAVA общаются здесь
Anonymous
POI Сохранение рабочей книги создает пустой файл

Сообщение Anonymous »

Я пытаюсь создать пустую книгу Excel с Apache POI версии 5.4.1. Сначала я создаю рабочую книгу, добавляю лист, а затем сохраняю его до действительного пути. Все швы для работы без каких -либо исключений. Когда я пытаюсь открыть полученный файл с Excel, я получаю сообщение, что формат файла недействителен. Когда я пытаюсь открыть его с помощью приложения ZIP, это сообщения, что файл пуст. Используются следующие методы: < /p>
@Test
public void testCreateAndSaveWorkbook() throws JsonMappingException, JsonProcessingException
{
Xls.activeWorkbook = null;

ObjectNode requestNode = mapper.createObjectNode();
requestNode.put(Key.SHEET.key(), "Test");
requestNode.put(Key.PATH.key(), "results/CreateAndSave.xlsx");

String response = Xls.createWorkbook(requestNode.toString());

JsonNode responseNode = mapper.readTree(response);
assertEquals(Executor.OK, responseNode.get(Executor.STATUS).asText());
assertNotNull(Xls.activeWorkbook);
assertEquals("Test", Xls.activeWorkbook.getSheetAt(0).getSheetName());

response = Xls.activeSheetPresent(requestNode.toString());

responseNode = mapper.readTree(response);
assertEquals(Executor.OK, responseNode.get(Executor.STATUS).asText());
assertEquals(1, responseNode.get(Key.INDEX.key()).asInt());
assertEquals("Test", responseNode.get(Key.SHEET.key()).asText());

response = Xls.saveAndReleaseWorkbook(requestNode.toString());

responseNode = mapper.readTree(response);
assertEquals(Executor.OK, responseNode.get(Executor.STATUS).asText());
assertNull(Xls.activeWorkbook);
}
< /code>
Тестовый пример < /p>
public static String createWorkbook(String request)
{
if (createRequestNode(request))
{
doCreateWorkbook();
}
return getResponse();
}

private static boolean doCreateWorkbook()
{
boolean result = true;
Type type = null;
JsonNode typeNode = getRequestNode().findPath(Key.TYPE.key());
if (typeNode.isTextual())
{
type = Type.findByExtension(typeNode.asText());
}
else if (typeNode.isMissingNode())
{
type = Type.XLSX;
}
if (Objects.nonNull(type))
{
switch (type)
{
case XLSX:
{
activeWorkbook = new XSSFWorkbook();
}
case XLS:
{
activeWorkbook = new HSSFWorkbook();
}
}
if (Objects.nonNull(activeWorkbook))
{
String name = AUTOMATIC_GENERATED_SHEET_NAME;
JsonNode nameNode = getRequestNode().get(Key.SHEET.key());
if (nameNode != null && nameNode.isTextual())
{
name = nameNode.asText();
}
Sheet sheet = activeWorkbook.createSheet(name);
getResponseNode().put(Key.SHEET.key(), sheet.getSheetName());
getResponseNode().put(Key.INDEX.key(), activeWorkbook.getSheetIndex(sheet));
}
}
else
{
result = addErrorMessage("illegal extension '" + typeNode.asText() + "'");
}
return result;
}
< /code>
Создание рабочей книги < /p>
public static String saveAndReleaseWorkbook(String request)
{
if (createRequestNode(request))
{
if (workbookPresent())
{
if (doSaveWorkbook())
{
doReleaseWorkbook();
}
}
}
return getResponse();
}

private static boolean doSaveWorkbook()
{
boolean result = true;
JsonNode pathNode = getRequestNode().findPath(Key.PATH.key());
if (pathNode.isTextual())
{
File file = new File(pathNode.asText());
OutputStream os = null;
try
{
file.getCanonicalPath();
if (!file.getName().endsWith(".xlsx") && !file.getName().endsWith(".xls"))
{
if (XSSFWorkbook.class.isInstance(activeWorkbook))
{
file = new File(file.getAbsolutePath() + ".xlsx");
}
else if (HSSFWorkbook.class.isInstance(activeWorkbook))
{
file = new File(file.getAbsolutePath() + ".xls");
}
}
os = new FileOutputStream(file);
activeWorkbook.write(os);
os.close();

}
catch (Exception e)
{
result = addErrorMessage("saving workbook failed (" + e.getLocalizedMessage() + ")");
}
finally
{
if (Objects.nonNull(os))
{
try
{
os.flush();
os.close();
}
catch (Exception e)
{
}
}
}
}
else if (pathNode.isMissingNode())
{
result = addErrorMessage("missing argument '" + Key.PATH.key() + "'");
}
else
{
result = addErrorMessage("illegal argument '" + Key.PATH.key() + "'");
}
return result;
}

private static boolean doReleaseWorkbook()
{
try
{
activeWorkbook.close();
activeWorkbook = null;
return true;
}
catch (IOException e)
{
addErrorMessage("Cannot not close workbook.");
return false;
}
}
< /code>
и сохранение рабочей книги. Но может быть что -то, что я не вижу правильно.
Любая помощь ценится!

Подробнее здесь: https://stackoverflow.com/questions/796 ... empty-file

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