Comments 40
Такой способ используют старые версии phpMyAdmin. Функционал такого решения крайне ограничен, но решение практично к примеру при очень больших объемах информации. Но именно для сохранения больших объемов я недавно этот класс добавлял в новую версию phpMyAdmin на сервере клиента. Но многие клиенты не распознают его как документ Excel и ругаются на это, хоть и отображают корректно.
Использую в работе библиотеку PHPExcel. Достаточно гибкая и удобная. Ее единственная проблема — переполнение памяти при создании документа большого объема, даже когда выбираешь кэш на диске. Пока этот баг, к сожалению, не пофиксили.
Использую в работе библиотеку PHPExcel. Достаточно гибкая и удобная. Ее единственная проблема — переполнение памяти при создании документа большого объема, даже когда выбираешь кэш на диске. Пока этот баг, к сожалению, не пофиксили.
У меня данные очень простые, поэтому выгоднее накидать примитивное решение, чем ставить библиотеку. Тем более, что с расширениями для PHP возникли какие-то проблемы, когда я эту библиотеку пытался поставить (чего-то не хватило, не помню чего именно), а разбираться с хостером было очень лениво.
к сожалению библиотека еще и течет если писать в цикле в разные XLS файлы. Решал через костыль в виде запуска внешнего РНР скрипта для генерации одного файла.
Тем не менее библиотека очень хороша
Тем не менее библиотека очень хороша
Spreadsheet_Excel_Writer хорош, но скудность документации и наличие пролем с кирилицей, даже при принудительном указании
$worksheet0->setInputEncoding('UTF-8');
. Плюс — вышеозначенный set неработает одновременно с setVersion. Кириллица и умлауты вроде отображаются при setVersion(8), но правда не в названии листа. Ошибок памяти у этой библиотеки не возникает, а документации достаточно для создания стандартных документов. К сожалению пришлось от нее отказаться, т.к. версия 8 не открывается на некоторых устройствах, к примеру iPhone/iPad (а у главного заказчика это рабочий инструмент), а в других версиях не отображается UTF, как вы правильно написали.
Ненадо путать теплое с мягким — дока есть, но ее мало. Я помню долго сидел и развлекался с setVersion/setInputEncoding, в итоге остановился на последнем. Даже им в багрепорт отписывал, правда безответно.
А CSV не?
phpexcel.codeplex.com/ смотрели?
А <head><meta http-equiv="content-type" content="text/html; charset=windows-1251"></head> от кодировки не помогает?
А зачем тут P3P заголовок?
А чем потом такие файлы разбирать на php? =)
Да таким, что-бы и нормальные файлы xls(xlsx) тоже разбирались?..
Да таким, что-бы и нормальные файлы xls(xlsx) тоже разбирались?..
Вы по сути заставляете Excel открыть html-страницу, переименовую в xls, а не создаете файл формата Excel. Цель топика «сгенерировать xls посредством php» не достигнута, зато изобретен очередной костыль.
Открыв этот файл в экселе мы можем с ним полноценно работать в плане форматирования, формул и т.д., в чем проблема? Да, с точки зрения внутреннего формата это будет не полноценный xls (до первого сохранения), но тут уже вечный вопрос про шашечки или ехать. Если оно выглядит как xls и работает как xls, то вот не пофиг что там внутри?
файл, открывающийся excel-ем — не есть xls документ. Просто умный интерпретатор экселя разгадывает предоставленный ему ребус.
Переименуем csv файл в xls — не откроется с ходу, потребует импорт. Я не спорю, у меня задачи простые, но на небольших объемах простых данных во всех внешних проявлениях файл идентичен xls.
Заказчик тоже человек простой, ему нужен файл, который открывается как xls, обрабатывается как xls и сохраняется как xls, а внутреннее устройство ему пофигу :)
Заказчик тоже человек простой, ему нужен файл, который открывается как xls, обрабатывается как xls и сохраняется как xls, а внутреннее устройство ему пофигу :)
Зачем переименовывать csv в xls? O_o
csv откроется в экселе безо всяких вопросов — молча и правильно.
Если данные простые, как уже было указано, то зачем пытаться преобразовать их в формат, который предусматривает более сложное представление? тем более что тут даже не преобразование в формат, а просто подсовывание данных под его видом.
Используйте CSV — это отличный способ передать данные в эксель. А дальше, как вы сами говорили, клиент будет делать с ними что угодно в нем.
csv откроется в экселе безо всяких вопросов — молча и правильно.
Если данные простые, как уже было указано, то зачем пытаться преобразовать их в формат, который предусматривает более сложное представление? тем более что тут даже не преобразование в формат, а просто подсовывание данных под его видом.
Используйте CSV — это отличный способ передать данные в эксель. А дальше, как вы сами говорили, клиент будет делать с ними что угодно в нем.
Есть еще один пример — habrahabr.ru/blogs/php/18726/
Его я так и не смог заставить работать с UTF-8 корректно.
У нас используется
И да, это не генерация xls, а способ открыть таблички из отчетов в экселе, чего во многих случаях достаточно:)
header("Content-Type: application/vnd.ms-excel");
И да, это не генерация xls, а способ открыть таблички из отчетов в экселе, чего во многих случаях достаточно:)
Почему то все, все без исключения, когда пытаются продружить «что то и Excel», пытаются использовать всё, всё что угодно — CSV, «HTML под видом XLS», даже библиотеки, которые генерируют «чистый XLS». Но все забывают про простой, удобный, не сильно сложнее чем CSV формат SYLK ( http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK) ). Это как RTF только для Excel.
Самый простой способ избежать проблем с кодировкой xls в Excel:
— создать новый документ в Excel содержащий символы кириллицы
— сохранить его как .html
— открыть *.html — там будет самый верный мануал
Не верите? Переименуйте в .xls и откройте в Excel.
— создать новый документ в Excel содержащий символы кириллицы
— сохранить его как .html
— открыть *.html — там будет самый верный мануал
Не верите? Переименуйте в .xls и откройте в Excel.
А как же быть с большими прайсами с разворачивающейся/сворачивающейся структурой?
Sign up to leave a comment.
Самый простой способ генерации xls в PHP