Итак, я создал файл .xlsx, используя модель XSSF apache -poi со всеми необходимыми мне данными, но клиент хочет точно такие же данные с одинаковым форматированием (каждое значение в своей собственной ячейке) , только в файле .csv. Итак, мне нужен тот же файл с другим расширением файла ...
Я пытался просто изменить расширение файла с .xlsx на .csv, но при открытии я получаю предупреждение о том, что «формат и расширение файла не совпадают», но после нажатия «ОК» файл открывается без каких-либо ошибок или неправильных данных. Могу ли я каким-то образом сохранить модель XSSF в виде файла .csv без получения упомянутой ошибки?
Я также пытался использовать CSVPrinter из apache -commons, но он записывает все данные из одного строка в одну ячейку (я знаю, что .csv файлы должны выглядеть так, но клиент хочет то, что хочет клиент).
CSVPrinter часть кода:
FileWriter out = new FileWriter("someFile.csv");
CSVPrinter csvPrinter = new CSVPrinter(out, CSVFormat.EXCEL);
if (workbook != null) {
XSSFSheet sheet1 = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet1.rowIterator();
while (rowIterator.hasNext()) {
Row row1 = rowIterator.next();
Iterator<Cell> cellIterator = row1.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
csvPrinter.print(cell.getStringCellValue());
}
csvPrinter.println();
}
}
csvPrinter.flush();
csvPrinter.close();
Это вызывается после создания и записи данных в XSSFWorkbook.
Если мне нужно использовать CSVPrinter, чтобы завершить то, что мне нужно, есть ли способ сделать это, не создавая файл .xlsx сначала (просто запишите данные в нужном формате в файл .csv напрямую)?