#java #excel #spring #apache-poi
#java #excel #весна #apache-poi
Вопрос:
Я хочу обработать файл Excel с помощью Java Spring. Я использую apche poi для обработки файла. Файл Excel генерируется автоматически и продолжает расти. Пример: файл Excel содержит 20 строк в день 1. На 2-й день файл Excel содержит 35 строк. Первые 20 строк те же, но есть 15 новых строк. Неизвестно, сколько строк будет добавлено или когда excel будет загружен. Данные из Excel сопоставляются с POJOs и сохраняются в базе данных.
Существует ли быстрый и надежный способ определить, какие новые строки были добавлены, и обрабатывать только эти строки?
редактировать: я понял, что это может быть не проблемой обработки Excel, а (также) проблемой оптимизации базы данных.
Комментарии:
1. Разве вы не можете отслеживать, сколько строк было в файле при предыдущем чтении, а затем пропустить столько при чтении в следующий раз? т. е. — было 100 строк. В следующий раз начните чтение со 101-го
2. Я думаю, вопрос слишком широкий. Что вы уже пробовали? Есть ли какой-либо уникальный идентификатор в каждой строке или поле, которое может служить идентификатором?
3. Я попытался проиндексировать базу данных по уникальной комбинации столбцов, я попробовал пакетную вставку, чтобы просто совершить одно обращение к базе данных, а не для каждой новой записи. Проблема с отслеживанием номера строки слишком рискованна. Я не могу быть уверен, что никто не удалил ни одной строки.
Ответ №1:
Вы можете использовать более новый API Apache POI, SXSSF, который является совместимым с API потоковым расширением XSSF для использования, когда необходимо создавать очень большие электронные таблицы, а пространство кучи ограничено. Он потребляет меньше памяти. Проверьте эту ссылку.
Комментарии:
1. это не отвечает на вопрос ops. Если у кого-то возникают проблемы с сохранением количества строк предыдущего дня, в первую очередь не следует начинать с SXSSF