Экспорт в Excel с помощью PEAR

meola

Новичок
Есть такой код:
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8);
$workbook->send('test.xls');

$worksheet =& $workbook->addWorksheet();

//$worksheet->mergeCells(9,2,9,3); //(1)

$format =& $workbook->addFormat();
$format->setFontFamily('Verdana');
$format->setBorder(2); // (2)
$format->setColor('black');
$format->setBold();
$format->setSize('10');

$worksheet->write(9,2,3,$format); // записываем число 3 в ячейку (9,2)

$workbook->close();
Всё работает, значение 3 в ячейку попадает С10 попадает, но вот если добавить строку (1), т.е. объединить 2 ячейки, то обрамление (2) уже не работает, т.е. обрамление только у крайней левой ячейки из обрамляемых и то, без правой границы, вот так:

Не пойму что я делаю не так или это баг самой бибилиотеки? У меня основная проблема с обрамлением объединенных ячеек...
 

radioheaded

PHP нуб
Я думаю, что это вы что-то делаете не так. Например, вот здесь

$worksheet->write(9,2,3,$format);
Я не знаю точной логики работы библиотеки, но предположил бы, что $format применяется к той ячейке, на которую вы указываете. Если вы хотите обрамить объединенную ячейку, то, наверное, нужно применить формат к диапазону.
 

meola

Новичок
Возможно вы правы, но функция write() задает формат только на ячейку, а не на диапазон, так что у меня выбор невелик
 

radioheaded

PHP нуб
Наверняка же есть метод, который ничего никуда не пишет, а просто задает форматирование ячейки или диапазона ячеек. Почитайте доку.
 

meola

Новичок
Опять появилась новая проблема. Заполняю ячейки листа Excel следующей информацией:
PHP:
		      $worksheet->writeNumber(7,1,1);
		      $worksheet->writeNumber(7,2,2);
		      $worksheet->writeNumber(7,3,3);
		      $worksheet->writeNumber(7,4,4);
		      $worksheet->writeNumber(7,5,5);
		      $worksheet->writeNumber(7,6,6);
		      $worksheet->writeNumber(7,7,7);
		      $worksheet->writeNumber(7,8,8);
		      $worksheet->writeNumber(7,9,9);
		      $worksheet->writeNumber(7,10,10);
		      $worksheet->writeNumber(7,11,11);
		      $worksheet->writeNumber(7,12,12);
		      $worksheet->writeNumber(7,13,13);
		      $worksheet->writeNumber(7,14,14);
		      $worksheet->writeNumber(7,15,15);
		      $worksheet->writeNumber(7,16,16);
		      $worksheet->writeNumber(7,17,17);
		      $worksheet->writeNumber(8,1,1);
		      $worksheet->writeNumber(8,2,2);
		      $worksheet->writeNumber(8,3,3);
		      $worksheet->writeNumber(8,4,4);
		      $worksheet->writeNumber(8,5,5);
		      $worksheet->writeNumber(8,6,6);
		      $worksheet->writeNumber(8,7,7);
		      $worksheet->writeNumber(8,8,8);
		      $worksheet->writeNumber(8,9,9);
		      $worksheet->writeNumber(8,10,10);
		      $worksheet->writeNumber(8,11,11);
		      $worksheet->writeNumber(8,12,12);
		      $worksheet->writeNumber(8,13,13);
		      $worksheet->writeNumber(8,14,14);
		      $worksheet->writeNumber(8,15,15);
		      $worksheet->writeNumber(8,16,16);
		      $worksheet->writeNumber(8,17,17);
		      $worksheet->writeNumber(9,1,1);
		      $worksheet->writeNumber(9,2,2);
		      $worksheet->writeNumber(9,3,3);
		      $worksheet->writeNumber(9,4,4);
		      $worksheet->writeNumber(9,5,5);
		      $worksheet->writeNumber(9,6,6);
		      $worksheet->writeNumber(9,7,7);
		      $worksheet->writeNumber(9,8,8);
		      $worksheet->writeNumber(9,9,9);
		      $worksheet->writeNumber(9,10,10);
		      $worksheet->writeNumber(9,11,11);
		      $worksheet->writeNumber(9,12,12);
		      $worksheet->writeNumber(9,13,13);
		      $worksheet->writeNumber(9,14,14);
		      $worksheet->writeNumber(9,15,15);
		      $worksheet->writeNumber(9,16,16);
Но если отправлю в файл ещё хоть одно значение, например,
PHP:
 $worksheet->writeNumber(9,17,17);
, то Office при открытии сформированного файла выкидывает ошибку: "В книге xxx.xls обнаружено содержимое которое не удалось прочитать." То есть 50 ячеек могу заполнить и всё. Это баг библиотеки? Кто сталкивался с подобной проблемой?
 

radioheaded

PHP нуб
Вот сейчас посмотрел, у нас эта библиотека, оказывается, используется в старой части кода одного подпроекта для генерации отчетов. Отчеты гораздо больше 50 ячеек ) Так что не думаю, что это баг библиотеки. Хотя можете попробовать разные версии.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Традиционный совет: не надо использовать Spreadsheet_Excel_Writer, он старый, глючный и неподдерживаемый. Используйте PHPExcel.
 
Сверху