Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Extensions > Spreadsheet_Excel_Writer и кодировка в OpenOffice |
Автор: artymen 18.6.2009, 17:17 |
Для MS Office я отдельный скрипт написал (после многочасовой долбежки я понял, что универсальный файл невозможно сгенерировать), так что сейчас борюсь персонально с OpenOffice. Если делаю setVersion(8) и setInputEncoding('CP1251'), то получается следующий результат: верхняя часть документа отображается нормально, а дальше начинаются косяки (MS Office вообще говорит, что документ поврежден, либо вылетает с предложением отправить отчет об ошибке), похоже на переполнение буфера или что-нить в этом духе. Если размер документа меньше определенной величины, то все нормально, но мне нужно генерить прайс размером порядка 2 тыс. строк. Вывод: writer генерит кривой BIFF8. С BIFF5 уже все перепробовал, перегонял текст через iconv() между CP1251, CP1252, UTF-8, UTF-16LE, UTF-16BE в различных комбинациях - бесполезно, каракули лишь разные получаются. Spreadsheet_Excel_Writer 0.9.1 OLE 1.0.0RC1 PHP 5.2.6 OpenOffice 3.0.1 Тема избитая, весь инет усыпан нерабочими решениями, так что прошу помощи здесь ![]() |
Автор: youri 18.6.2009, 17:48 |
http://phpclub.ru/talk/showthread.php?postid=838338#post838338 http://phpclub.ru/talk/showthread.php?postid=775308#post775308 |
Автор: artymen 18.6.2009, 19:40 | ||||||||
Итак, внимание сюда ![]() 1) Spreadsheet_Excel_Writer генерит кривой BIFF8, так что про setVersion(8) можно забыть, пока не пофиксят в следующих версиях (утверждают, что проект заморожен уже с 2006 года), а вместе с тем и про setInputEncoding() и юникод 2) Решение проблемы с кириллицей (документ будет нормально отображаться и в MS Office и OpenOffice): Лезем в скрипты Spreadsheet_Excel_Writer, расположенные в "<путь_к_установленному_pear>\Spreadsheet\Excel\Writer\" В Workbook.php находим
В Format.php находим
Теперь безо всяких лишних манипуляций можно писать русский текст в ячейки ! P.S. (взято отсюда: http://sc.openoffice.org/excelfileformat.pdf)
|
Автор: antonML 1.12.2009, 13:33 |
Все хорошо, а как быть с ограничением в 255 символов ? проблема осталась. Она устраняется при использовании setVersion(8) но это приводит к вышеизложенным проблемам ... |
Автор: artymen 1.12.2009, 18:22 |
А вот не знаю. Я доволен, что хотя бы вышеизложенные проблемы решил ![]() |
Автор: antonML 1.12.2009, 18:42 |
При использовании setVersion(8) и setInputEncoding('CP1251') у меня тоже сбивается кодировка, но проблема решается когда я убираю setVersion(8) без всяких исправлений Workbook.php и Format.php. Но при этом строки больше 255 символов обрезаются ... Интересно, а у вас строки обрезаются ? Может я не до конца разобрался ? (и еще, когда я возвращаю setVersion(8) строки не обрезаются) |