Изменение данных Excel, Java не замечает

#java #excel

#java #excel

Вопрос:

У меня глупая проблема. Я автоматизирую некоторые тесты с помощью selenium, некоторые данные находятся в таблицах Excel (так и было, я изменю это, я обещаю : p) Некоторые поля выпадающие, я могу их изменить, и все в порядке. Другие представляют собой обычный текст, если я изменю их, мой класс ExcelReader просто не заметит этого и выберет старое значение. Я не эксперт в Excel (я не имею об этом особого представления), но кто-нибудь может догадаться о возможной причине этого?

Примечание: Я не проверяю изменения в режиме реального времени. Я выполняю разные выполнения и наблюдаю, что данные не подлежат изменению

Комментарии:

1. Откуда взялся этот ExcelReader класс? Вы это написали? Если да, то какую библиотеку он использует для чтения электронных таблиц?

2. Я написал это, в нем используются классы JExcelAPI WorkBook и Sheet: jexcelapi.sourceforge.net/resources/javadocs/index.html

Ответ №1:

Я полагаю, вы делаете это:

  1. Открытие электронной таблицы через Microsoft Excel
  2. Открытие электронной таблицы через ваш ExcelReader класс
  3. Внесение изменений в электронную таблицу с помощью Microsoft Excel
  4. Вы не замечаете изменения через свой ExcelReader класс

Если это так, я полагаю, что JExcelAPI (наряду с большинством других библиотек Excel) прочитает файл электронной таблицы только один раз. То есть оно не будет синхронизировано с любыми изменениями, происходящими в файле с течением времени. Возможно, вам придется создать поток, чтобы отслеживать дату последнего изменения файла и перечитывать его, когда эта дата меняется.

 new Thread(
        new Runnable() {
            public void run() {
                File file = new File("/path/to/your/spreadsheet");
                long previouslyLastModified = file.lastModified();
                while (true) {
                    Thread.sleep(1000); // 1000 milliseconds == 1 second
                    long lastModified = file.lastModified();
                    if (lastModified != previouslyLastModified) {
                        // Reload the spreadsheet
                    }
                    previouslyLastModified = lastModified;
                }
            }
        }
    ).start();
  

Конечно, вероятно, существуют некоторые библиотеки, которые намного лучше справляются с отслеживанием изменений в файле. Сама Java не поставляется с функциональностью для просмотра файла (хотя она включена в Java 7).

Комментарии:

1. Я не проверяю изменения в режиме реального времени. Я выполняю разные выполнения и наблюдаю, что данные не подлежат изменению: S