Проверил в MS Excel - не открываются файлы.. ща буду решать.Все, теперь работает в 2007-м. Файл обновил.Привет все!
Понадобилось мне как-то отдавать табличные данные юзеру в несколько страниц. Хм "csv" - подумал я! Но не тут-то было.. не поддерживает csv страницы. И вот тогда, подумалось, что все это дело можно засунуть в xls файл, но хостинг был шаред, практически пустой. После некоторых часов поисков готового рабочего варианта было принято решение писать свой велосипед.
Вобщем методом научного тыка в течении пары часов нашел что за что отвечает и как этот xlsx генерируется. Потом порядком времени ушло на то чтобы это все собрать воедино в более-менее вменяемый вариант. Ну и собственно все получилось, и даже
работает!
Итак, класс "Simple XLSX"! (блин, надо новое название придумывать.. уже
есть такой класс, только он читает xlsx файл
). Не требователен к серверу, требуется модуль
Zlib, но он практически везде есть. Архив с нужными файлами прикрепил, а сейчас опишу как там все
работает.
В архиве найдете: Как сгенерировать файл:include(dirname(__FILE__) . '/sxlsx/sxlsx.php');
$sxlsx = new sxlsx('/tmp/test.xlsx');
$sxlsx->addSheet(1, 'страница 1');
$sxlsx->addData('a1', 'Здесь A1');
$sxlsx->addSheet(2, 'номер два');
$sxlsx->addData('b3', 'Здесь B3');
$sxlsx->selectSheet(1);
$sxlsx->addData('b1', 'Здесь B1 на первой странице');
$sxlsx->generate();
Есть варианты генерации:
- если при создании объекта указывается путь до конечного файла, то файл сохраняется туда. Если ничего не указывать, то, соответственно ничего никуда не сохранится.
- если при вызове функции
generate() передать в нее название файла (например просто "my_xlsx_file.xlslx"), то файл будет предложен к скачиванию юзеру под этим именем.
Ну и тут уже можно комбинировать: можно просто отдать файл юзеру, без сохранения на сервер, а можно и сохранить и отдать.. а можно вообще ниче не делать
ЗЫ1. да, код не комментированный, торопился
Обещаюсь исправиться!
На будущее:- сделать возможным изменять ширину колонок и высоту строк
- стили тектса, цвета и прочие красивости
- немного разделить исключения на разные типы
- еще че-нибудь
- profit!
ЗЫ2 самое сложное в программировании - писать описание к тому что накодил
Смотрите класс, там могут быть недокументированные функции