Sargass
@Sargass

Грамотное формирование xls отчётов — как?

Задача — автоматизировать процесс формирования Excel'евских отчётов на перле.
Самым подходящим вариантом был выбран модуль Excel::Template, который позволяет формировать xls-документ на основе xml шаблона, что конечно очень удобно.
Но. Сформированная книга получается до безобразия отвратительной — потому что обработчик отказывается воспринимать какие-либо настройки стилей заданные в xml-файле.
Если использовать Spreadsheet, то в принципе можно задать какие-то параметры оформления, если я правильно понимаю. Но Excel::Template просто заполняет определённую ячейку значением из переменной.
Как можно привести получаемую книгу в аккуратный отформатированный вид?
  • Вопрос задан
  • 3915 просмотров
Пригласить эксперта
Ответы на вопрос 3
spacediver
@spacediver
Такой путь пробовали: вначале подготовить красивые пустые файлы (xls), а затем открывать, заполнять числами, закрывать?.. Лишь бы стили не трогал :)
Ответ написан
Sargass
@Sargass Автор вопроса
Во, нашел крутую штуку Excel::Writer::XLSX
Ответ написан
Комментировать
astrobeglec
@astrobeglec
Попробуйте вставленный ниже код сохранить как html и открыть его в экселе.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1251"> <TITLE></TITLE> <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.3 (Win32)"> <META NAME="AUTHOR" CONTENT="Сергей Зыкин"> <META NAME="CREATED" CONTENT="20120720;16122583"> <META NAME="CHANGED" CONTENT="0;0"> <STYLE> <!-- BODY,DIV,TABLE,THEAD,TBODY,TFOOT,TR,TH,TD,P { font-family:"Arial"; font-size:x-small } --> </STYLE> </HEAD> <BODY TEXT="#000000"> <TABLE FRAME=VOID CELLSPACING=0 COLS=3 RULES=NONE BORDER=0> <COLGROUP><COL WIDTH=86><COL WIDTH=86><COL WIDTH=86></COLGROUP> <TBODY> <TR> <TD WIDTH=86 HEIGHT=17 ALIGN=RIGHT SDVAL="1" SDNUM="1049;"><B>1</B></TD> <TD WIDTH=86 ALIGN=RIGHT SDVAL="2" SDNUM="1049;"><I>2</I></TD> <TD WIDTH=86 ALIGN=RIGHT SDVAL="3" SDNUM="1049;"><U>3</U></TD> </TR> <TR> <TD HEIGHT=17 ALIGN=RIGHT BGCOLOR="#00FFFF" SDVAL="4" SDNUM="1049;">4</TD> <TD ALIGN=RIGHT SDVAL="5" SDNUM="1049;"><FONT COLOR="#FF0000">5</FONT></TD> <TD STYLE="border-top: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000" ALIGN=RIGHT SDVAL="6" SDNUM="1049;">6</TD> </TR> <TR> <TD HEIGHT=17 ALIGN=RIGHT SDVAL="7" SDNUM="1049;"><FONT COLOR="#00FF00">7</FONT></TD> <TD ALIGN=RIGHT SDVAL="8" SDNUM="1049;">8</TD> <TD ALIGN=RIGHT SDVAL="9" SDNUM="1049;">9</TD> </TR> </TBODY> </TABLE> <!-- ************************************************************************** --> </BODY> </HTML>

ИМХО проще генерировать страницу которую прочтет эксель (кстати её можно выгружать как *.xls файл), чем лупить в таблицу данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы