Журнал Системный Администратор, Январь 2005

Журнал Системный Администратор

Январь 2005

Цена: $4.5 US

  Подписаться

Зарегистриванные пользователи, пожалуйста следуйте этой ссылке


Путешествие из Perl в Excel Использование Spreadsheet::WriteExcel для формирования отчетов

Использование Spreadsheet::WriteExcel для формирования отчетов

Сергей Супрунов

Как было показано в статье «Внутренний веб-сервер» (журнал «Системный администратор», №10(23), октябрь 2004 г.), веб-сервер достаточно удобно использовать для быстрого развертывания несложных приложений, занимающихся сбором, обработкой и выдачей пользователям тех или иных данных. Один из немногих недостатков такого подхода, как было указано, заключается в том, что не всегда удается распечатать качественный отчет, который не стыдно было бы представить начальству или отослать по электронной почте, не вынуждая получателя заниматься копированием-вставкой тела письма и его предпечатной (или в общем плане – предварительной) обработкой.

Наиболее универсальным путем решения указанной проблемы является формирование XML-документа, работать с которым умеют многие программы. Однако в данной статье я хочу рассмотреть другой, менее универсальный, но более удобный для конечного пользователя способ – непосредственное формирование файла в формате Excel в CGI-сценарии. Дальнейшее изложение предполагает, что вы знакомы с языком Perl и его применением для CGI-сценариев, умеете настраивать веб-сервер, а также имеете представление о СУБД PostgreSQL (или какой-нибудь другой). Будет рассматриваться работа под FreeBSD, поэтому потребуется также знание базовых принципов UNIX-систем, хотя заставить все описанное работать под Windows, думаю, особого труда не составит. У пользователей Linux никаких проблем возникнуть также не должно.

Для решения поставленной задачи будем использовать имеющийся в коллекции CPAN (http://cpan.org) Perl-модуль Spreadsheet::WriteExcel, установить который во FreeBSD можно также и из коллекции портов (/usr/ports/textproc/p5-Spreadsheet-WriteExcel), что представляется мне более удобным.

На момент написания статьи актуальной была версия 2.11. Данная версия позволяет создавать файлы в формате BIFF8, поддерживающем Unicode. Следовательно, необходимо будет все текстовые строки преобразовывать в UTF8. Подробнее об этом будет сказано далее, при рассмотрении конкретных примеров. К сожалению, от этой версии мне не удалось добиться правильного отображения имени листа, содержащего русские символы. Работа с одной из предыдущих версий 0.43 (несмотря на значительный разрыв номеров версии, от 2.11 ее отделяет не более года), реализующей, по всей видимости, формат BIFF7 и использующей стандартную кодировку Windows, позволяющую сохранять данные в cp1251, никаких проблем ни с кодировкой данных, ни с кодировкой имени листа не выявила. Но поскольку Unicode – это, пожалуй, единственное решение проблем различных кодировок, то на пути к его безраздельному господству придется претерпеть некоторые неудобства.

Оставшая часть статьи доступна только подписчикам. Если вы желаете продолжить чтение этой статьи, то вам необходимо подписаться на эту статью или весь номер.

Подписаться на весь номер

Зарегистриванные пользователи, пожалуйста следуйте по этой ссылке