После обновления существующего значения ячейки в файле .xlsx с помощью POI, файл дает HTTP 403, если используется API - PullRequest
0 голосов
/ 26 октября 2018

У меня есть файл Excel, который содержит много столбцов и один набор строк данных в нем. После изменения значения поля asOf , которое я использую в API, который принимает файл Excel, выдается ошибка 403 Forbidden. Я проверил следующие вещи:

  1. Поле обновлено правильно. (Я проверил форматирование и стиль ячейки в Excel после обновления вручную.)
  2. Если я изменю значение ячейки вручную, то API выдаст 200.

Изображение для ответа об ошибке: Когда поле asOf обновляется кодом Java

enter image description here

Изображение для ответа: Когда поле asOf обновляется вручную.

enter image description here

Изображение поля, которое я обновляю, ниже:

enter image description here

Ниже приведен код Java, который я использую:

   public static void excelFileReadAndUpdate() throws IOException {
    XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("./src/test/resources/testdata/HoldingDataWeekendDate.xlsx"));
    FileOutputStream fileOut = new FileOutputStream("./src/test/resources/testdata/HoldingDataWeekendDate.xlsx");
    XSSFSheet sheet1 = wb.getSheetAt(0);
    XSSFRow row = sheet1.getRow(1);
    XSSFCell cell = row.getCell(0);
    cell.setCellValue("2018-10-31");
    wb.write(fileOut);
    fileOut.close();
}

Примечание: Я пробовал и другие подходы, такие как использование книги и сохранение форматирования, но оно не работает. Если я обновлю поле вручную после открытия Excel, оно будет работать.

Любое предложение / совет будет большой помощью. Заранее спасибо.

1 Ответ

0 голосов
/ 02 ноября 2018

После поиска и применения многих подходов, наконец, это было решено путем применения некоторого кода, дающего разрешение на чтение / запись к этой папке / файлу в Java.

 public static void excelFileReadAndUpdate() throws IOException {

   final File file = new File("location of your excel file directory");
   file.setReadable(true, false);
   file.setExecutable(true, false);
   file.setWritable(true, false);

XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("./src/test/resources/testdata/HoldingDataWeekendDate.xlsx"));
FileOutputStream fileOut = new FileOutputStream("./src/test/resources/testdata/HoldingDataWeekendDate.xlsx");
XSSFSheet sheet1 = wb.getSheetAt(0);
XSSFRow row = sheet1.getRow(1);
XSSFCell cell = row.getCell(0);
cell.setCellValue("2018-10-31");
wb.write(fileOut);
fileOut.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...