Заметки программиста

Каждый будний день, ровно в 9, я пишу о себе, о своей работе и о технологиях web программирования123

Posts Tagged ‘ excel ’

Многие для генерации Excel файлов на PHP используют Excel Writer, я давно еще писал о нем. Проблем нет и все хорошо работает до тех пор пока нам не нужно записать текст на родном языке, здесь то все и ломается. Хотя MS Office откроет сгенерированный файл корректно, а вот OpenOffice уже нет и покажет полное уныние неведомой кодировки. На самом деле в этой прекрасной библиотеке есть небольшой баг, и убив кучу времени, я нашел патч это исправляющий, итак:

В файле class.writeexcel_workbook.inc.php исправляем

$this->_codepage          = 0x04E4;

на

$this->_codepage          = 0x04E3;

И в class.writeexcel_format.inc.php

$this->_font_charset   = 0;

на

$this->_font_charset   = 0xCC;

1 пост тому назад я писал о том как легко и просто генерировать Excel файлы из PHP с помощю  Excel Writer. Но в ходе обсуждения истина, как всегда, пришла сама собой и был найден самый идеальный вариант с морем возможностей. Смотрим Spreadsheet::WriteExcel, этот класс позволяет делать практически все на что способен Excel, склеивать ячейки, задавать стили шрифта и фона, создавать панели и даже вставлять картинки. Пожалуй лучшей реализации я не видел.

И на последок несколько демок.

По этой теме все уже давно написано, я просто покажу как это делается. Друзья из Индии нам помогли и выложили готовый класс – Excel Writer. Вот пример его работы:

<?php

    include("excelwriter.inc.php");

    $excel=new ExcelWriter("myXls.xls");

    if($excel==false)
        echo $excel->error;

    $myArr=array("Name","Last Name","Address","Age");
    $excel->writeLine($myArr);

    $myArr=array("Sriram","Pandit","23 mayur vihar",24);
    $excel->writeLine($myArr);

    $excel->writeRow();
    $excel->writeCol("Manoj");
    $excel->writeCol("Tiwari");
    $excel->writeCol("80 Preet Vihar");
    $excel->writeCol(24);

    $excel->writeRow();
    $excel->writeCol("Harish");
    $excel->writeCol("Chauhan");
    $excel->writeCol("115 Shyam Park Main");
    $excel->writeCol(22);

    $myArr=array("Tapan","Chauhan","1st Floor Vasundhra",25);
    $excel->writeLine($myArr);

    $excel->close();
    echo "data is write into myXls.xls Successfully.";
?>

Для тех кто не может зарегистрироваться на phpclasses (кстати очень полезный сайт), выложу код у себя — Excel Writer.