Чтение защищенного паролем XLSX в linux (и Windows) с помощью Perl

#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, если это не работает, вы можете использовать командную строку для преобразования в файл, не защищенный паролем, а затем открыть его в выбранном вами инструменте.