Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHPExcel5 проблема с выводом в файл / 9 сообщений из 9, страница 1 из 1
13.12.2015, 22:16
    #39126836
TemichRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
Добрый вечер, помогите пожалуйста)
Пытаюсь выдать пользователю файл xls , но когда скачиваю файл в нём кваказябры.
Даже если выдать пустой файл, также кваказябры.
Кодировка везде UTF-8. Если поменять на CP1251 так же кваказябры, только отличаются.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        require_once('PHPExcel.php');
        require_once('PHPExcel/Writer/Excel5.php');

        $objPHPExcel = new PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
        $active_sheet = $objPHPExcel->getActiveSheet();
        $objPHPExcel->createSheet();
        
        $active_sheet->mergeCells('A1:D1');
        $active_sheet->getRowDimension('1')->setRowHeight(40);
        $active_sheet->setCellValue('A1','Техно мир');
        $active_sheet->mergeCells('A2:D2');
        $active_sheet->setCellValue('A2','Компьютеры и комплектующие на любой вкус и цвет');
        $active_sheet->mergeCells('A4:C4');
        $active_sheet->setCellValue('A4','Дата создания прайс-листа');
        
        header("Content-Type:application/vnd.ms-excel");
        header("Content-Disposition:attachment;filename='simple.xls'");

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');


Если вместо выдачи файла для скачивания, убрать header's и сохранить файл вот так:
$objWriter->save('C:/1.xls');
То в файле все прекрасно выводится.
Спасибо заранее.
...
Рейтинг: 0 / 0
13.12.2015, 22:40
    #39126850
TemichRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
PHP 5.3 c Apache
...
Рейтинг: 0 / 0
13.12.2015, 22:49
    #39126852
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
Перед отдачей файла какой-нить дряни не отдаётся? Вроде пробелов, BOM, перевода строки.
...
Рейтинг: 0 / 0
13.12.2015, 23:19
    #39126876
TemichRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
vkle,

Если даже ничего не писать в файло, то та же ерунда
...
Рейтинг: 0 / 0
13.12.2015, 23:34
    #39126886
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
TemichRus,

А попробуй в ячейку текст писать с BOM. У меня что-то похожее было. Спасло или добавление или убирание BOM.
...
Рейтинг: 0 / 0
14.12.2015, 00:18
    #39126893
TemichRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
DarkMaster,

А как определить utf с bom у меня щас или нет? Может в настройках где то можно найти?
...
Рейтинг: 0 / 0
14.12.2015, 01:48
    #39126904
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
TemichRus,

Предлагаю сделать такой простенький тест.
1. TemichRusсохранить файл вот так:
$objWriter->save('C:/1.xls');
2. Сохранить тот же самый файл (не меняя его содержимого) "скачиванием" через скрипт.
3. Сравнить размеры полученных файлов с точностью до байта.

Размеры файлов должны быть одинаковы. По идее. Ведь, по сути, при одинаковых данных внутри файла должен сформироваться такой же файл независимо от способа сохранения.

Если размеры файлов будут отличаться, то следует посмотреть оба файла любой HEX-смотрелкой. Возможно, увидите какой-то мусор или иные отличия. Скорее всего, различия окажутся в самом начале или в конце.
...
Рейтинг: 0 / 0
14.12.2015, 10:49
    #39127052
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
TemichRus,

Ну я вот так вот писал (выкусил из старого проекта):

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 // на вход  в $s данные в win1251
  function xlstr($s)
  {
    $result="\xEF\xBB\xBF".mb_convert_encoding($s,"UTF-8","windows-1251");
    return ($result);
  }

  function dowriteinfo($objPHPExcel, $rownum, $info1, $info2)
  {
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$rownum,xlstr($info1));
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$rownum,xlstr($info2));
  }



P.S. Возможно там еще версия PHPExcel играет роль.
...
Рейтинг: 0 / 0
14.12.2015, 16:10
    #39127505
TemichRus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHPExcel5 проблема с выводом в файл
DarkMaster,

Спасибо, помогло)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHPExcel5 проблема с выводом в файл / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]