Многие для генерации 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.