Используя java, я читаю строковые значения данных, разделенные запятой, а затем записываю в шаблон файла Excel, предоставленный на веб-портале, с помощью библиотеки apache poi. В тот момент, когда я пытаюсь загрузить отредактированный файл Excel, я получаю сообщение об ошибке в неверном формате; однако, когда я открываю файл вручную, нажимаю Ctrl + S (сохраняю) и загружаю файл, он успешно загружается.
public static void setData(String dataValues, String path) {
Workbook workbook;
try {
File excelExportFile = new File(path);
workbook = WorkbookFactory.create(excelExportFile);
Sheet sheet = workbook.getSheetAt(0);
int nextRow = sheet.getLastRowNum()+1;
Row row = sheet.getRow(nextRow);
row = sheet.createRow(nextRow);
int cellnum=0;
List<String> items = Arrays.asList(dataValues.split("\\s*,\\s*"));
Iterator<String> it = items.iterator();
while(it.hasNext()) {
String value = it.next();
String regex = "([0-9]|1[012])\\/([0-9]|[12][0-9]|[3][01])\\/(19|20)\\d\\d";
Matcher matcher = Pattern.compile(regex).matcher(value);
if (matcher.find()) {
CellStyle cellStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
cellStyle.setDataFormat(
createHelper.createDataFormat().getFormat("m/d/yyyy"));
Cell cell = row.createCell(cellnum);
cell.setCellValue(value);
cell.setCellStyle(cellStyle);
}
else {
Cell cell = row.createCell(cellnum);
cell.setCellValue(value);
}
cellnum++;
}
try (FileOutputStream fileOut = new FileOutputStream(path + ".new")) {
workbook.write(fileOut);
fileOut.close();
}
workbook.close();
FileUtilities fileUtil = new FileUtilities();
fileUtil.deleteFile(path+ ".new");
}catch (EncryptedDocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Я ожидаю, что после выполнения этого кода файл должен быть успешно загружен.
На самом деле, мне нужно открыть файл вручную, нажать (Ctrl + S) сохранить, и он загружается.