Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Генерация XLS на PHP и кодировка на смартфонах
Форумы портала PHP.SU » » Кодировки и все смежное » Генерация XLS на PHP и кодировка на смартфонах

Страниц (1): [1]
 

1. dropoff - 23 Мая, 2017 - 23:39:22 - перейти к сообщению
Всем привет.

Есть скрипт который генерирует XLS документ используя Spreadsheet::WriteExcel (не знаю как правильно эта библиотека называется).

После генерации, на компьютере открывает файл нормально и кодировка не летит. А вот на смартфонах кодировка кривая.

В БД данные в UTF8.
Файл который генерирует в UTF8 без бом.

При генерации данные проходят через

Заголовки при генерации в файл

PHP:
скопировать код в буфер обмена
  1.   header("Content-type: application/vnd.ms-excel; charset=windows-1251");
  2.   header("Content-Disposition: attachment; filename=price.xls");
  3.   header("Expires: 0");
  4.   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  5.   header("Pragma: public");


На компах все норм, на смартфоне.. Iphone и приложение Excel открывает криво, аналогично и на Android. Данные таблиц с форматированием, CSV не подходит. Переписывать на другой библиотеке - очень много и не хотелось бы. Покопался в интернете, но что-то ничего толкового не нашел вообще(
2. andrewkard - 24 Мая, 2017 - 17:00:56 - перейти к сообщению
dropoff пишет:
После генерации, на компьютере открывает файл нормально и кодировка не летит.

Система, офис?
3. dropoff - 24 Мая, 2017 - 18:38:24 - перейти к сообщению
офис.

вопрос в том, как на мобильном открывать в кодировке нормальной.
4. andrewkard - 24 Мая, 2017 - 21:00:00 - перейти к сообщению
Excel , OpenOffice, LibreOffice читают? Наверное все же что то неправильное пишется. Может имеет смысл разархивировать/просмотреть редактором файлы, тот то Вы записали и тот что читается, может что то станет ясным.
Может поможет: https://stackoverflow[dot]com/questi[dot][dot][dot]-bom-doesnt-work
5. dropoff - 27 Мая, 2017 - 17:53:25 - перейти к сообщению
Точно. OpenOffice открывает криво.
Из всех вариантов, только сам офис открывает в правильной кодировке. Все остальные криво.
Вот дела...
6. Мелкий - 27 Мая, 2017 - 17:55:09 - перейти к сообщению
А если писать нормальный utf8, то мс офису крышу сносит?
7. andrewkard - 27 Мая, 2017 - 20:11:17 - перейти к сообщению
Мелкий пишет:
А если писать нормальный utf8, то мс офису крышу сносит?

нет, нужно bom сначала вписать, тогда открывает норм
Цитата:

// Add BOM to fix UTF-8 in Excel
fputs($fp, chr(0xEF) . chr(0xBB) . chr(0xBF) );

После это Excel открывает сразу в правильной кодировке. Иначе кракозябры.
8. dropoff - 27 Мая, 2017 - 20:50:00 - перейти к сообщению
Мелкий пишет:
А если писать нормальный utf8, то мс офису крышу сносит?

кириллица криво.

Походу тут библиотека сама такая. Или я криворукий. Уже что только не пробовал из рекомендаций. Только офис и открывает все нормально(
9. andrewkard - 27 Мая, 2017 - 23:36:04 - перейти к сообщению
dropoff пишет:
Походу тут библиотека сама такая. Или я криворукий. Уже что только не пробовал из рекомендаций. Только офис и открывает все нормально(


прорвемся Улыбка
10. dropoff - 29 Мая, 2017 - 10:15:54 - перейти к сообщению
Больше времени потерял на поиски решения.

Переписал все на PHPExcel. Хоть и прожорлив он, но работает корректно и функций море))

Спасибо всем за участие!

 

Powered by ExBB FM 1.0 RC1