После обновления существующего значения ячейки в файле .xlsx с использованием poi файл выдает http 403, если он используется api.

У меня есть файл 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, он работает.

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

Вы можете попробовать загрузить измененный вручную файл в excelFileReadAndUpdate. Я предполагаю: это тоже не удастся. Похоже, что аутентификация, сеанс, файлы cookie не предоставляются / не обрабатываются правильно кодом.

Joop Eggen 26.10.2018 09:28

@JoopEggen Привет, Джуп, код, который я написал, предназначен только для создания / обновления файла excel после обновления поля, а не для РАЗМЕЩЕНИЯ файла. Я отправляю файл через Postman, у которого есть все конфигурации, то есть файлы cookie, заголовки и т. д.

Vaibhav_Sharma 26.10.2018 09:40
./src/test/resources/ довольно сомнительный по нескольким причинам. Написание тоже. Если вы ничего не сделаете в коде (закомментируете все), используя ручной HoldingDataWeekendDate.xlsx, это должно сработать.
Joop Eggen 26.10.2018 09:55

Привет, Джуп, на самом деле я написал только фрагмент кода, который обновляет и генерирует файл excel по пути ./src/test/resources/, а затем он используется JerseyClient для некоторой конечной точки API со встроенной платформой автоматизации BDD API . Приносим извинения за созданную путаницу.

Vaibhav_Sharma 26.10.2018 10:38
1
4
264
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После поиска и применения многих подходов, наконец, она была решена путем применения некоторого кода, дающего разрешение на чтение / запись этой папке / файлу в 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();
}

Другие вопросы по теме