Обновлено: Начиная с версии 3.10 POI поддерживает шифрование, а также дешифрование файлов XLSX.См. страницу «Поддержка шифрования» на веб-сайте POI .Ниже все еще актуально для двоичных книг XLS.
Согласно странице «Поддержка шифрования» на сайте POI POI поддерживает чтение зашифрованных файлов XLS и XLSX.Шифрование не упоминается на этой странице, что означает, что оно не поддерживается.Это подтверждается поиском на сайте POI слова «encrypt» , которое возвращает лишь несколько результатов, все из которых касаются дешифрования.Я также взглянул на источники для их криптографической реализации, которая, кажется, обрабатывает только дешифрование.Это не удивительно;POI предназначен для извлечения данных и индексации поиска, а не для создания новых электронных таблиц.
Как уже предлагали другие, часто можно обойти отсутствующие функции в POI, создав шаблон в Excel, а затем используя POI для его заполнения.с данными.К сожалению, это не сработает для шифрования, потому что формат файлов зашифрованных электронных таблиц радикально отличается.
Если вы готовы платить за коммерческое программное обеспечение, последняя версия ExtenXLS имеет полную поддержку чтения и записи для всех форматов шифрования, поддерживаемых Excel.Просто создайте EncryptedWorkBookHandle
вместо обычного WorkBookHandle
.При этом будет использоваться максимально надежный шифр, поддерживаемый неизмененным JRE, RC4 для XLS и 128-битный AES для XLSX.Если вы хотите использовать 256-битный AES с OOXML и установили неограниченную политику JCE , вы можете сделать это с классом MSOfficeEncrypter
.
JExcelAPI популярный API Java-таблиц с открытым исходным кодом вообще не поддерживает шифрование. Aspose.Cells , коммерческое предложение, поддерживает шифрование Stong .Документация для электронной таблицы Actuate, кажется, исчезла из сети, поэтому я не могу сказать, поддерживает ли она шифрование или нет.
Поскольку ни один из свободно доступных API Java-таблиц, кажется, не поддерживает написание зашифрованных электронных таблицЕсли вы не хотите использовать коммерческое программное обеспечение, вам нужно найти обходной путь.Вы можете, например, записать электронную таблицу в зашифрованный ZIP-файл.java.util.zip
не поддерживает шифрование, но похоже, что Zip4j поддерживает.
Полное раскрытие информации : Я работаю в Extentech, компании, стоящей за ExtenXLS.