Posts Tagged ‘таблица’

Шапка таблицы в phprtf

Суббота, января 30, 2010

Так получилось, что решения одной задачки мне очень нужно было генерировать файл, который впоследствии легко воспринимался бы в ворде. Использование текстовых файлов исключалось, поскольку, нужны были таблицы.

Используя поисковики, нашел неплохую библиотеку phprtf.

Все работало, генерировалась ртэфка, за одним исключением: ни как не хотел работать повтор шапки таблицы, а было ооооочень нужно.

Заглянув код генерируемого файла увидел, что тэг \trhdr (он то и отвечает за повтор строки на каждой странице) подставляется к каждой ячейке, соответственно, все строки как бы должны повторяться и не повторяется ничего.

Заглянув в иходники библиотеки увидел то место где и происходит вставка этого тэга, а поскольку свойство firstRowHeader класса Table распространяется на всю таблицу, то и подстановка происходит во все строки.

Лечением этого бага является замена куска кода (в файле rtf/Table.php):

if (!empty($this->firstRowHeader)) {
$content .= '\trhdr ';
}

на следующий код:

if ((!empty($this->firstRowHeader))and($row==1)) {
$content .= '\trhdr ';
}

Ну, естественно, после создания талицы в необходимо выставить соответствующий флаг:

$rtf = new Rtf();
$sect = &$rtf->addSection();
$table = &$sect->addTable();
$table->addRows(150, 0);
$table->setFirstRowAsHeader();