Есть еще замечательная штука Excel::Template, которая работает примерно так. Делаем шаблон с помощью XML:
<workbook>
<worksheet name=«tester»>
<cell text="$HOME" />
<cell text="$PATH" />
</worksheet>
</workbook>
И создаем Excel-файл:
use Excel::Template;
# Create the Excel template
my $template = Excel::Template->new(
filename => 'test.xml',
);
# Add a few parameters
$template->param(
HOME => $ENV{HOME},
PATH => $ENV{PATH},
);
$template->write_file('test.xls');
А так же модуль для Catalyst, плагин для Template Toolkit, куча парсеров и write-ров этих файлов, DBI драйвер, конвертор в XML. Эх, сделали бы уже полный обзор…
Это был первый пост на Хабре… так сказать пробный 0:)
Выбор именно OLE был обусловлен тем, чтобы не плодить кучу модулей на компе, т.к. требуется еще обработка текстов в MS Word. К тому же это всего лишь необходимый минимум :)
Но вообще верное замечание — сравнение + и — разных методов можно было сделать. На досуге постараюсь ;)
Там ниже уже все написали. Во-первых, виндовс-онли, во-вторых, хранить эксель рядом с сервером БД глупо, в третьих через OLE это более гиморно, чем прочими модулями, которые пишут непосредственно в файл, в-четвертых, это ресурсоемко и долго.
Нет, конечно же — БД отдельно на серваке, а Excel на машинах пользователей. Тогда по порядку еще разок — сначала выполняется запрос из БД через DBI, затем полученные данные заносятся в Excel (шаблон задается скриптом) и печатается отчет.
Видимо надо было сразу полную картину описать…
Если уж использовать Perl, то лучше делать скрипт кроспалатформенным. Например на Unix-сервере те же самые отчеты генерить. А если windows-only, то имхо .NET самое здесь будет.
На моей практике часто сталкиваешься с тем что сейчас оно работает, но рано или поздно упрешься в ограничение модуля или с тем что просто он морально устарел.
Недавно как раз генерировал лист Excel для отчетов. Только я xml-ку создавал. Описание формата можно на msdn.microsoft.com найти. Да и не на перле, а на tcl с помощью библиотеки tdom.
Perl & MS Excel