#java #excel
#java #excel
Вопрос:
У меня глупая проблема. Я автоматизирую некоторые тесты с помощью selenium, некоторые данные находятся в таблицах Excel (так и было, я изменю это, я обещаю : p) Некоторые поля выпадающие, я могу их изменить, и все в порядке. Другие представляют собой обычный текст, если я изменю их, мой класс ExcelReader просто не заметит этого и выберет старое значение. Я не эксперт в Excel (я не имею об этом особого представления), но кто-нибудь может догадаться о возможной причине этого?
Примечание: Я не проверяю изменения в режиме реального времени. Я выполняю разные выполнения и наблюдаю, что данные не подлежат изменению
Комментарии:
1. Откуда взялся этот
ExcelReader
класс? Вы это написали? Если да, то какую библиотеку он использует для чтения электронных таблиц?2. Я написал это, в нем используются классы JExcelAPI WorkBook и Sheet: jexcelapi.sourceforge.net/resources/javadocs/index.html
Ответ №1:
Я полагаю, вы делаете это:
- Открытие электронной таблицы через Microsoft Excel
- Открытие электронной таблицы через ваш
ExcelReader
класс - Внесение изменений в электронную таблицу с помощью Microsoft Excel
- Вы не замечаете изменения через свой
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