июля 5, 2011

Создание exel средствами php (php_writeexcel)


Хорошим бонусом вашего сайта может быть выгрузка информации в exel, например, автоматически генерируемый прайс продукции или результат расчётов, выгруженный в смету. Если полноценный Exel документ не нужен, можно воспользоваться трюком с изменением расширения (.html на .xls). Но если перед Вами стоит более сложная задача, например, внедрить поддержку формул, нужно использовать более сложные решения.
В разработке я использовала набор классов php_writeexcel. Некоторые функции пришлось менять, т.к с приходом php5 подходы используемые в коде устарели.
Создание нового листа таблицы:

$worksheet = $workbook->addworksheet('name_list');

Вставка изображения:

$worksheet->insert_bitmap('A1', 'logo.bmp', 1, 1, 1, 0.5);

Вставка текста (в качестве текста может выступать формула exel):

$worksheet->write(5, 0,  '№', $header);
$worksheet->write(6, 3,  '=D9*D10*D11*D12*D13');
$worksheet->write(7, 5,  '=SUM(F1:F12)', $f_num);

Текст можно вставить из массива:

$headings = array('текст1', 'текст2', 'текст3', 'текст4');
$worksheet->write_row('A5', $heading);

Работа со стилями колонок:

$worksheet->set_column(0, 0, 20);
$worksheet->set_column(1, 1, 60);

Работа со стилями ячеек:

$val_name = $workbook->addformat();

Стили можно передать массивом методу, или вызывать каждый отдельно

$heading  = $workbook->addformat(array(
                                        bold    => 1,
                                        color   => 'red',
                                        size    => 16,
                                        merge   => 1,
                                        ));

Цвета и рамки:

$border->set_color('white');
$border->set_color(8); // так же установит белый
$border->set_fg_color('grey');
$border->set_border_color('red');
// В качестве цвета можно использовать символьный код или число от 8 до 63 (см тб. ниже)
$border->set_border(1);
// Числовое значение соответствует типу и толщине линии

Типы рамок:

1 Continuous (Сплошная) _____
2 Continuous (Сплошная) _____
3 Dash(Пунктирная) —–
4 Dot(Точки) …..
6 Double(Двойная) ===========

Цветовая палитра используемая в документе:

цветовая палитра
Шрифт и начертание:

$header->set_bold();
$header->set_italic();
$header->set_underline();
$header->set_font('Arial');
$header->set_size('10');

Отступы:

 

Выравнивание и перенос по словам(vjustify):

$border->set_align('center');
$border->set_align('vcenter');
$border->set_merge();
$border->set_align('vjustify');

Формат отображения цифр:

$f_num->set_num_format('#,#0');

Стили устанавливаются отдельно для каждой ячейки с помощью третьего параметра:

$worksheet->write(1, 0,  '№', $heading);
$worksheet->write(3, 4,  $price, $f_num);

Комментарии

  • Alex

    Анастасия, выложите пожалуйста этот класс под php5. :)