Создание Excel-файлов с помощью PHPExcel

Коммерция, а в особенности торговля никогда не обходится без отчетности. Отчеты нужны для эффективного анализа текущего положения дел в бизнесе. В таблицы можно вводить различные данные: числа, текст, даты и т.д. Excel позволяет не просто выстраивать таблицы с данными. Он позволяет делать вычисления над данными таблиц. Кроме того, можно сортировать и фильтровать данные. Как только бизнес начал занимать просторы Интернета, сюда начали переносить все решения для ведения бизнеса на персональных компьютерах. Excel не стал исключением. Сегодня я хочу рассказать про очень удобную объектно-ориентированную библиотеку для работы с Excel-файлами, которая имеет название PHPExcel.

Библиотека
Скачать библиотеку можно со странички Downloads официального сайта. Текущая доступная версия имеет номер 1.7.1. На сайте доступно несколько различных архивов для скачивания.

Рекомендую скачать всю библиотеку со всей документацией. Размер распакованных данных внушительный (ок. 76 Мб), но большая часть – это документация. Сама библиотека «весит» всего 6 (!) Мб, что по моим меркам тоже кажется достаточно большим. Но с другой стороны, библиотека проводит много преобразований элементов без сторонних компонентов, поэтому размер должен быть не маленьким.
Распространяется PHPExcel под лицензией LGPL, поэтому проблем с лицензией быть не должно (если это кому-то важно ;) ).
Системные требования библиотеки тоже не маленькие:

  • PHP 5.2 или выше;
  • php_zip – расширение для работы с Zip-архивами;
  • php_xml – расширение для работы с XML;
  • php_gd2 – расширение для работы с рисунками
  • mb_string – расширения для работы с кодировками. Библиотека работает исключительно с UTF-8.

Быстрый старт
После распаковки архива получится папка PHPExcel, в которой находится папка Classes. Именно здесь располагаются файлы библиотеки. Чтобы не было проблем с путями библиотеки при внедрении в различные фреймворки, лучше всего установить путь к классам через set_include_path().
Вот пример создания небольшого Excel-файла.
excel.php

<?php
set_include_path(get_include_path() . PATH_SEPARATOR .
'PhpExcel/Classes/');
//подключаем и создаем класс PHPExcel
include_once 'PHPExcel.php';
$pExcel = new PHPExcel();
$pExcel->setActiveSheetIndex(0);
$aSheet = $pExcel->getActiveSheet();
$aSheet->setTitle('Первый лист');
//устанавливаем данные
//номера по порядку
$aSheet->setCellValue('A1','№');
$aSheet->setCellValue('A2','1');
$aSheet->setCellValue('A3','2');
$aSheet->setCellValue('A4','3');
$aSheet->setCellValue('A5','4');
//названия сайтов
$aSheet->setCellValue('B1','Названия');
$aSheet->setCellValue('B2','http://www.web-junior.net');
$aSheet->setCellValue('B3','http://www.google.com');
$aSheet->setCellValue('B4','http://www.yandex.ru');
$aSheet->setCellValue('B5','http://www.twitter.com');
//мой личный рейтинг
$aSheet->setCellValue('C1','Рейтинг');
$aSheet->setCellValue('C2','100');
$aSheet->setCellValue('C3','99');
$aSheet->setCellValue('C4','90');
$aSheet->setCellValue('C5','85');
//устанавливаем ширину
$aSheet->getColumnDimension('B')->setWidth(25);
//отдаем пользователю в браузер
include("PHPExcel/Writer/Excel5.php");
$objWriter = new PHPExcel_Writer_Excel5($pExcel);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="rate.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
?>

В результате получается вот такой чудо-рейтинг.

Рисунок

Самый правильный рейтинг всех времен и народов :)

Разъяснения
Теперь по порядку. Класс PHPExcel является ядром библиотеки. Он хранит в себе все листы (Sheet) книги Excel.
Для установки активного листа (тот с которым будем работать), нужно вызвать метод setActiveSheetIndex() и передать ему индекс листа по порядку. Индексация начинается с нуля, поэтому первый лист будет иметь индекс 0, второй – 1, третий – 2 и т.д.
Метод getActiveSheet() вернет активный лист. Это объект класса PHPExcel_Worksheet. Поэтому код

$aSheet = $pExcel->getActiveSheet();

Запишет в переменную $aSheet активный лист.
Класс PHPExcel_Worksheet имеет множество методов для работы с листом, ячейками, строками, столбцами и др.
Для установки значения ячейки нужно вызвать метод setCellValue() активного листа.

setCellValue( [string $pCoordinate = 'A1'],
[mixed $pValue = null])

В метод передаются два параметра:

  • string $pCoordinate – номер ячейки – нумерация идет также как и в Excel, напр. A1, C5, D8 и т.д.
  • mixed $pValue – значение, которое устанавливается в эту ячейку.

Тот столбец, в котором у нас вписаны сайты, получается слишком узким, поэтому нужно установить ширину для столбца B. Столбец мы можем получить с помощью метода getColumnDimension() активного листа ($aSheet)

PHPExcel_Worksheet_ColumnDimension getColumnDimension(
[string $pColumn = 'A'])

В качестве параметра передаем ему строку с именем нужного столбца (в нашем случае это B). Метод вернет объект столбца. Столбец представлен классом PHPExcel_Worksheet_ColumnDimension. Сейчас нас интересует только один из его методов. А именно setWidth().

PHPExcel_Worksheet_ColumnDimension setWidth(
[double $pValue = -1])

В качестве единственного параметра передаем устанавливаемую ширину столбца.

Ширина (и высота) в Excel может измеряться тремя способами:

  • внутренняя ширина в символьных единицах (напр. 8,43. Этот вид чаще всего отображается в Excel);
  • полная ширина в пикселях (напр. 64 pixels);
  • полная ширина в символьных единицах (напр. 9,140625, -1 указывает на то, что ширина отключена).

Библиотека PHPExcel работает с третьим видом меры, поскольку этот вид хранится во всех версиях Excel.
Теперь нужно сохранить наше творение. Для сохранения доступно несколько классов. Каждый сохранит по-своему, в своем формате. Доступны форматы Excel5, Excel2007, HTML, PDF и др. Эти классы расположены в папке PHPExcel/Writer/ библиотеки. Они имеют название PHPExcel_Writer_*, где вместо * вставляем соответствующий формат.
Сохранение происходит следующим образом: в конструктор «классу-записывателю» передается объект класса PHPExcel, т.е. нашей книги. После чего нужно вызвать метод save(), которому передается имя файла.

void save($pFilename = null)

В этот файл будет записана Excel-книга в соответствующем формате. Если в качестве имени файла передать строку ‘php://output’, то файл не будет сохранен, а будет выведен в браузер.

Украшательства
Теперь рассмотрим пример работы со стилями. Прежде всего со шрифтами.
excel.php

//настройки для шрифтов
$baseFont = array(
	'font'=>array(
		'name'=>'Arial Cyr',
		'size'=>'10',
		'bold'=>false
	)
);
$boldFont = array(
	'font'=>array(
		'name'=>'Arial Cyr',
		'size'=>'10',
		'bold'=>true
	)
);
//и позиционирование
$center = array(
	'alignment'=>array(
		'horizontal'=>PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
		'vertical'=>PHPExcel_Style_Alignment::VERTICAL_TOP
	)
);
//установим жирный шрифт для заголовков
//и заодно отцентрируем
$aSheet->getStyle('A1')->applyFromArray($boldFont)
->applyFromArray($center);
$aSheet->getStyle('B1')->applyFromArray($boldFont)
->applyFromArray($center);
$aSheet->getStyle('C1')->applyFromArray($boldFont)
->applyFromArray($center);
//и основной шрифт для всех остальных
for($i=2;$i<6;$i++){
	$aSheet->getStyle('A'.$i)->applyFromArray($baseFont);
	$aSheet->getStyle('B'.$i)->applyFromArray($baseFont);
	$aSheet->getStyle('C'.$i)->applyFromArray($baseFont);
}

Вот так выглядят изменения
Рисунок

Чудо-рейтинг меняет облик

Для настройки стилей ячейки есть класс PHPExcel_Style. Добраться до него можно из активного листа ($aSheet), вызвав метод getStyle()

PHPExcel_Style getStyle( [string $pCellCoordinate = 'A1'])

В качестве параметра передается строка с именем ячейки, для которой извлекается класс стилей. У класса стилей есть чудесный метод, который позволяет вынести все настройки в массив. Этот метод называется applyFromArray(). В качестве параметра ему передается массив с различными настройками. Для установки различных видов стилевых параметров нужно использовать различные секции в массиве.

  • font – используется для настроек шрифтов ячейки;
  • alignment – используется для настроек позиционирования;
  • color – используется для настроек цвета ячейки;
  • fill – используется для задания заливки ячейки
  • и другие, подробнее см. документацию.

Формулы
Все Excel-файлы поддерживают формулы, для вычисления значений ячеек. PHPExcel тоже поддерживает добавление формул в ячейки. К сожалению в формулах содержится недостаток библиотеки PHPExcel. Все функции формул на английском языке. Как называются функции можно посмотреть в документации. Установить формулу можно так
excel.php

.
$aSheet->setCellValue('B6','Всего:')->getStyle('B6')
->applyFromArray($boldFont)->applyFromArray($center);
//формула для вычисления суммы балов
//наших сайтов
$formul = '=SUM(C2:C5)';
$aSheet->getCell('C6')->setDataType(
PHPExcel_Cell_DataType::TYPE_FORMULA)->setValue($formul);

Рисунок

Вместе мы набрали много баллов

Второй способ попроще

...
$aSheet->setCellValue('B6','Всего:')->getStyle('B6')
->applyFromArray($boldFont)->applyFromArray($center);
//формула для вычисления суммы балов
//наших сайтов
$formul = '=SUM(C2:C5)';
$aSheet->setCellValue('C6',$formul);
...

т.е. через все тот-же setCellValue()

На основе всего вышеизложенного можно уверенно заявить, что библиотека PHPExcel обладает достаточно мощными средствами для создания таблиц Excel и сохранения этих таблиц в различные форматы файлов.

Читайте все статьи цикла:

Популярность: 100%


Интересное из других блогов:

2leep.com

И не забывайте комментировать статью.

Добавляйся в группу во вконтакте, чтобы самым первым узнавать все новости сайта

Отзывов: 220 на «Создание Excel-файлов с помощью PHPExcel»

  1. Автор: kanat, 5 марта 2010 в 05:27

    использует Internet Explorer 6.0 Internet Explorer 6.0 на Windows XP Windows XP

    Здравствуйте!
    установил PhpExcel, когда с .xls файла данные выгружаю на html страницу на локальном все работает а на сервере отображается какие то символы, иногда при обновлении страницы выводит правильно. как думаете в чем проблема
    Зарранее благодарен!!!

    • Автор: web-junior, 5 марта 2010 в 10:04

      использует Firefox 3.6 Firefox 3.6 на Windows XP Windows XP

      Добрый день!
      Это скорее всего стандартные проблемы с кодировкой.
      Попробуйте вручную в браузере установить кодировку UTF-8.
      Откройте html-код и посмотрите, какая кодировка установлена в мета-теге. Проверьте, какую кодировку шлет веб-сервер.

      • Автор: kanat, 5 марта 2010 в 10:27

        использует Firefox 3.5.1 Firefox 3.5.1 на Windows XP Windows XP

        в мета-теге естественно UTF-8 и вручную установил также, и веб сервер шлет UTF-8. в начале вообще не отобразила, потом я заметил что в каталоге extensions (линукс) не было файла zip.so , установил этот пакет а также mbstring.so, потом сразу вроде заработала но гонимыми символами.
        на локальном деньвере (там PHP 5.2.6) были та же проблемы но устранены после копирования в каталог C:\WebServers\usr\local\php5\ext файлы php_zip.dll php_mbstring.dll(v5.7.7) и раскоментирования этих строк в php.ini

        к стати вот url http://portal.kaztrk.kz/14.php

  2. Автор: Sat-lin, 9 марта 2010 в 11:14

    использует Opera 10.10 Opera 10.10 на GNU/Linux GNU/Linux

    Спасибо за статью, но что то у меня не работает! Скачал полный пакет PHPExcel 1.7.1
    Использовал ваш первый тестовый код, он выдал:
    Fatal error: Uncaught exception ‘Exception’ with message ‘Cloning a Singleton is not allowed!’ in /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/ReferenceHelper.php:560 Stack trace: #0 /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/ReferenceHelper.php(82): PHPExcel_ReferenceHelper->__clone() #1 /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/Worksheet.php(729): PHPExcel_ReferenceHelper::getInstance() #2 /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/Worksheet.php(394): PHPExcel_Worksheet->setTitle(‘Worksheet’) #3 /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel.php(128): PHPExcel_Worksheet->__construct(Object(PHPExcel)) #4 /pub/home/defo/htdocs/temp/123/new/test.php(10): PHPExcel->__construct() #5 {main} thrown in /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/ReferenceHelper.php on line 560

    Не подскажете в чем может быть дело?

    • Автор: web-junior, 9 марта 2010 в 11:26

      использует Firefox 3.6 Firefox 3.6 на Windows XP Windows XP

      Проверьте ваши настройки php. Особенно обратите внимание на опцию zend.ze1_compatibility_mode. Она должна быть выключена (установлена в off).

      Для отключения этой опции в php.ini
      zend.ze1_compatibility_mode = Off

      или в начале скрипта напишите код
      <?php
      ini_set('zend.ze1_compatibility_mode', '0');
      ….

      • Автор: Sat-lin, 9 марта 2010 в 11:33

        использует Opera 10.10 Opera 10.10 на GNU/Linux GNU/Linux

        Огромное спасибо! xls создался, но в нем уже в открытом документе пишет:
        Fatal error: Uncaught exception ‘Exception’ with message ‘Can’t create temporary file’ in /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/Shared/OLE/OLE_File.php:98 Stack trace: #0 /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/Writer/Excel5.php(198): PHPExcel_Shared_OLE_PPS_File->init() #1 /pub/home/defo/htdocs/temp/123/new/test.php(42): PHPExcel_Writer_Excel5->save(‘php://output’) #2 {main} thrown in /pub/home/defo/htdocs/temp/123/new/PhpExcel/Classes/PHPExcel/Shared/OLE/OLE_File.php on line 98

        • Автор: web-junior, 9 марта 2010 в 11:48

          использует Firefox 3.6 Firefox 3.6 на Windows XP Windows XP

          Библиотека не может создать временный файл, для сохранения данных перед отправкой в браузер. Скорее всего это происходит потому что папка с временными файлами не имеет прав на запись. По умолчанию временной папкой является текущая папка. Поставьте права на запись для текущей папки и попробуйте снова.

  3. Автор: Стас, 4 апреля 2010 в 19:30

    использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

    Здравствуйте.
    Спасибо за данную библиотеку. Для меня оказалась чрезвычайно полезной. Но в процессе использования столкнулся с проблемой. Хотя скорее всего это не проблема данной библиотеки. Суть в следующем:
    Обращение к скрипту который генерирует файл xls осуществляется с страници с формой. Обратите внимание что сайт использует https протокол. (open ssl с открытым ключом). При открытии данного сайта, как и остальных с открытым ключем браузер предупреждает о том что данные могут быть похищены и т.д… Так вот фаерфокс справляется с этим безупречно, так как уведомив однажды о риске использовании данного ресурса, он больше не возвращается к этому вопросу. А вот IExplorer спрашивает об этом каждый раз и как следствие возникает ошибка при сохранении exel файла. Браузер выдает что этот файл невозможно сохранить. Сохранение осуществляется как в примере у вас на сайте
    header(‘Content-Type: application/vnd.ms-excel’);
    header(‘Content-Disposition: attachment;filename=”places.xls”‘);
    header(‘Cache-Control: max-age=0′);
    $objWriter->save(‘php://output’);
    Если не сложно, подскажите как обойти эту ошибку. Может отправив некую информацию в заголовке можна сделать автоподстверждение или что-то в этом роде?
    Заранее спасибо за ответ.
    Извините за оффтоп.

    • Автор: web-junior, 14 апреля 2010 в 09:32

      использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

      Врядли существует подобный заголовок. Судя по всему это глюк ИЕ.
      Если найдете как исправить, пожалуйста, сообщите и нам об этом.

  4. Автор: Людмила, 14 апреля 2010 в 09:10

    использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

    Здравствуйте! Хорошая статья. Как раз то, что надо. Однако, не выводит ни одну буковку на русском языке, ничего своего не делала, просто заюзала ваш код. И ничего! Первая строчка вообще не отображается, остальное выводится хорошо! Думаю, ну ладно, попыталась вывести с бд – та же штуковина! Читаю комменты – видимо проблема с кодировкой. Поставила сравнение в бд utf8_general_ci – та же штука. ПОМОГИТЕ! Может я что-то не корректно делаю!
    Заранее благодарна!

    • Автор: web-junior, 14 апреля 2010 в 09:36

      использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

      Добрый день!
      Скорее всего у вас проблемы с соединением с базой. Попробуйте выполнить запрос
      SET NAMES ‘utf-8′
      сразу после установки соединения с базой (подробнее вы можете прочитать в этой статье).

      • Автор: Людмила, 14 апреля 2010 в 09:43

        использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

        Благодарю! сейчас буду пробовать!

      • Автор: Людмила, 14 апреля 2010 в 10:06

        использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

        В вашей статье “Чтение Excel…” увидела функцию mb_convert_encoding()
        Поставила конструкцию:
        $aSheet->setCellValue($B, mb_convert_encoding($row['file_name'], ‘utf-8′, ‘windows-1251′));
        $aSheet->setCellValue($C, mb_convert_encoding($row['file_opisanie'], ‘utf-8′, ‘windows-1251′));

        Выводит с базы хорошо! Спасибо! ;) ))

  5. Автор: Дмитрий, 16 апреля 2010 в 23:20

    использует Firefox 3.5.9 Firefox 3.5.9 на Ubuntu 9.10 x64 Ubuntu 9.10 x64

    Здравствуйте!
    Когда делаю по приведенной инструкции все отлично получается…но вот пытаюсь проявить инициативу и не получается, а имнно почему-то невыходит вызвать примерочный файл функцией include или require в теле другой странички.Основная проблема с кодировкой. + скрипт запихует в созданный файлик все тело странички в которой вызван, естественно в кракозябрах.БД – utf8, дистрибутив – utf8, однако не так давно я совершил переход на utf8, может в этом проблема?может где-то забыл указать соответствие?

    • Автор: web-junior, 17 апреля 2010 в 12:38

      использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

      Добрый день!
      Я очень огорчен, что у вас не получается проявить инициативу. Но по вашему описанию понять в чем проблема очень сложно. Пожалуйста, приведите кусок кода, в котором происходит ошибка с подробным описанием какие ошибки при этом происходят.

  6. Автор: Дмитрий, 17 апреля 2010 в 23:16

    использует Firefox 3.5.9 Firefox 3.5.9 на Ubuntu 9.10 x64 Ubuntu 9.10 x64

    Вобщем идея была такая: создаем файл для генерации excel таблици, назовем его test.php он генерирует rate.xls(как у вас в примере).Затем выводим test.php методом require, т.е. require ‘test.php’; в теле страници содержащей переменные, необходимые для генерации rate.xls.Эта идея !получилась…ну да ладно

    Пришлось пойти другим путем, путем отправки переменных файлу.теперь все отлично получается только одна проблема, подскажите пожалуйста как переносить строки в ячейке?? Пробовал \r , \n , \r\n даже ничего не получается… :(

    • Автор: web-junior, 18 апреля 2010 в 09:51

      использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

      Перевод текста в ячейке делается с помощью \n, заключенного в двойные кавычки. Кроме того, нужно в стилях выставить перевод текста для ячейки. В сумме это выглядит так
      $aSheet->setCellValue(‘C7′,”Строка1\nСтрока2″);
      $aSheet->getStyle(‘C7′)->getAlignment()->setWrapText(true);

      • Автор: Дмитрий, 18 апреля 2010 в 17:05

        использует Firefox 3.5.9 Firefox 3.5.9 на Ubuntu 9.10 x64 Ubuntu 9.10 x64

        с переводом отлично получилось, все работает, спасибо!:)Теперь только не могу справиться с изображениями…Вставляю вот этот код

        $iDrowing = new PHPExcel_Worksheet_Drawing();
        //берем рисунок
        $iDrowing->setPath(‘image.jpeg’);

        //устанавливаем ячейку
        $iDrowing->setCoordinates(‘D3′);

        //устанавливаем смещение X и Y
        $iDrowing->setOffsetX(50);
        $iDrowing->setOffsetY(50);

        //ложим на лист
        $iDrowing->setWorksheet($objPHPExcel->getActiveSheet());

        Точно в таком же виде. Вызываю в браузере генерацию, выводит это :
        Fatal error: Call to a member function getActiveSheet() on a non-object in /home/xxx/xxxxxxx/xxxxx/test.php on line 43

        в 43-й строке:
        $iDrowing->setWorksheet($objPHPExcel->getActiveSheet());

        Сам рисунок image.jpeg в корне пристствует.

        • Автор: web-junior, 18 апреля 2010 в 18:52

          использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

          Вместо $objPHPExcel->getActiveSheet() передайте объект с активным листом в метод $iDrowing->setWorksheet()

          • Автор: Дмитрий, 21 апреля 2010 в 09:29

            использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

            А не подскажите еще как можно определить цвет текста?Всю документацию перерыл так и не осознал…И может тоже знаете, вот я применил рамку для группы ячеек:
            $styleArray = array(
            ‘borders’ => array(
            ‘outline’ => array(
            ‘style’ => PHPExcel_Style_Border::BORDER_THICK,
            ‘color’ => array(‘argb’ => ‘FFFF0000′),
            ),
            ),
            );
            $aSheet->getStyle(‘A1:B3′)->applyFromArray($styleArray);

            и по умолчанию ширина рамки слишком велика, примерно 4-5 пикселов…Где можно это изменить?

          • Автор: web-junior, 21 апреля 2010 в 10:53

            использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

            Подскажу =)
            цвет содержится в классе
            PHPExcel_Style_Color. У него есть методы getRGB() и getARGB(). В зависимости от того, в какой цветовой модели вам нужен цвет, можете вызывать любой из них. Добраться до него можно так

            1
            
            $aSheet->getStyle('B6')->getFont()->getColor()->getRGB()

            где $aSheet – это активный лист, а B6 – нужная ячейка.

            По поводу рамки: судя по всему настроек ширины рамки в библиотеке нет.

  7. Автор: Александр, 21 апреля 2010 в 15:10

    использует Google Chrome 4.1.249.1045 Google Chrome 4.1.249.1045 на Windows XP Windows XP

    Спасибо за статью, оч интересно тока такой вопрос: создал файл впихнул туда ваш код ткнул к классу, открываю страницу в браузере сразу же скачивается xls документ, в котором вся моя страница с headom и footerom и в середине ошибка

    Fatal error: Uncaught exception ‘Exception’ with message ‘Multibyte string function overloading in PHP must be disabled.’ in C:\Program Files\Bitrix Environment\www\Classes\PHPExcel\Writer\Excel5.php:163 Stack trace: #0 C:\Program Files\Bitrix Environment\www\page.php(39): PHPExcel_Writer_Excel5->save(‘php://output’) #1 {main} thrown in C:\Program Files\Bitrix Environment\www\Classes\PHPExcel\Writer\Excel5.php on line 163

    вопрос собственно как сделать чтобы в таблицу не попадало все подряд а только то что я создам

    • Автор: web-junior, 21 апреля 2010 в 17:34

      использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

      Судя по ошибке у вас включена перегрузка строковых функций. Самый лучший способ, это в php.ini отключить эту функциональность установив опцию
      mbstring.func_overload в off

  8. Автор: Дмитрий, 22 апреля 2010 в 11:35

    использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

    А есть ли возможность позиционировать изображения по центру?Смещение по X/Y не очень походит, просто много изображений и все в разном соотношении width/height.

    Кстати, я там выше писал по поводу ширины рамки вот как можно менять:
    PHPExcel_Style_Border::BORDER_NONE
    PHPExcel_Style_Border::BORDER_THIN
    PHPExcel_Style_Border::BORDER_MEDIUM
    PHPExcel_Style_Border::BORDER_DASHED
    PHPExcel_Style_Border::BORDER_DOTTED
    PHPExcel_Style_Border::BORDER_THICK
    PHPExcel_Style_Border::BORDER_DOUBLE
    PHPExcel_Style_Border::BORDER_HAIR
    PHPExcel_Style_Border::BORDER_MEDIUMDASHED
    PHPExcel_Style_Border::BORDER_DASHDOT
    PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT
    PHPExcel_Style_Border::BORDER_DASHDOTDOT
    PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT
    PHPExcel_Style_Border::BORDER_SLANTDASHDOT

    • Автор: web-junior, 22 апреля 2010 в 21:21

      использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

      У самого класса PHPExcel_Worksheet_Drawing нет методов для установки позиционирования изображения. Можно попробовать с помощью класса PHPExcel_Style_Alignment установить для ячейки выравнивание по центру. Но кажется на изображение это никак не влияет.

      По поводу ширины рамки.
      То, что вы написали – это стиль рамки. Действительно, если вместо PHPExcel_Style_Border::BORDER_DASHED использовать PHPExcel_Style_Border::BORDER_MEDIUM, то можно добиться изменения размера рамки. Но установки конкретной ширины невозможно.

      • Автор: Дмитрий, 26 апреля 2010 в 11:03

        использует Firefox 3.6.3 Firefox 3.6.3 на Windows XP Windows XP

        А такой еще вопросик, как определить размер полей и колонтитулов в параметрах страницы, есть ли такая возможность?
        По умолчанию верхнее и нижнее поле = 1.9, а левое и правое = 1.8 , что в принципе достаточно много для вывода на печать, достаточно было бы все по 1…

        • Автор: web-junior, 26 апреля 2010 в 21:51

          использует Firefox 3.5.8 Firefox 3.5.8 на Windows XP Windows XP

          Эти настройки можно найти в классах PHPExcel_Worksheet_HeaderFooter, PHPExcel_Worksheet_PageMargins, PHPExcel_Worksheet_PageSetup

RSS-лента комментариев. Адрес для трекбека

Ваш отзыв

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Нажимая на кнопку "Добавить" вы принимаете правила комментирования