#linux #perl #excel
#linux #perl #преуспеть
Вопрос:
Я пытаюсь написать простой perl-скрипт, который считывает некоторые поля из защищенного паролем файла XSLX.
Я просмотрел электронные таблицы :: XLSX и SimpleXlsx, но ни один из них, похоже, не поддерживает файлы, защищенные паролем.
Есть идеи, как это можно сделать?
Используя Win32::OLE, это делается следующим образом:
my $Book =
$Excel->Workbooks->Open( { FileName => $file, Password => $password } );
Комментарии:
1. Спасибо за ответы, к сожалению, тогда не совсем прямолинейно. К счастью, у меня есть возможность читать xsl в старом стиле, и это просто с помощью Spreadsheet::ParseExcel.
2. Учитывая, что мое предложение было в основном попыткой преобразовать XLSX обратно в XLS, чтобы вы могли его прочитать, я искренне согласен, что если вы можете получить файл, по-прежнему предоставляемый как старый XLS, это лучший способ.)
Ответ №1:
Ни один из текущих модулей чтения Perl xlsx не поддерживает чтение зашифрованных файлов.
Расшифровать эти файлы непросто, поскольку зашифрованные XML-файлы хранятся в документе OLE-контейнера, в отличие от обычного ZIP-контейнера.
Ответ №2:
Это «должно» быть выполнимо с OpenOffice / LibreOffice. Похоже, в поддержке xlsx и зашифрованных файлов довольно много ошибок, не говоря уже о комбинации, поэтому я бы попробовал сначала открыть файлы в графическом интерфейсе LibreOffice, и если это работает для ваших конкретных файлов, вызовите его через библиотеку или командную строку.
OpenOffice :: OODOC — это соединитель Perl, если это не работает, вы можете использовать командную строку для преобразования в файл, не защищенный паролем, а затем открыть его в выбранном вами инструменте.