请教:PHPExcel导出生成不了文件,乱码。

代码:

$objPHPExcel = new PHPExcel();
                $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(15);
                $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(15);

                $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('I')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('J')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('K')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('L')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle('M')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
                $obj = $objPHPExcel->setActiveSheetIndex(0);

                //商品数据
                $obj->setCellValue('A1', '数据1');
                $obj->setCellValue('B1', '数据2');
                $obj->setCellValue('C1', '数据3');
                $obj->setCellValue('D1', '数据4');
                $obj->setCellValue('E1', '数据5');
                $obj->setCellValue('F1', '数据6');
                $obj->setCellValue('G1', '数据7');
                $obj->setCellValue('H1', '数据8');
                $obj->setCellValue('I1', '数据9');
                $obj->setCellValue('J1', '数据10');
                $obj->setCellValue('K1', '数据11');
                $obj->setCellValue('L1', '数据12');
                $obj->setCellValue('M1', '数据13');

                $itemListData = $groupList['data'];
                $i = 1;
                foreach ($itemListData as $itemData) {
                    $obj->setCellValue('A' . ($i), $itemData['id1']);
                    $obj->setCellValue('B' . ($i), $itemData['id2']);
                    $obj->setCellValue('C' . ($i), $itemData['id3']);
                    $obj->setCellValue('D' . ($i), $itemData['id4']);
                    $obj->setCellValue('E' . ($i), $itemData['id5']);
                    $obj->setCellValue('F' . ($i), $itemData['id6']);
                    $obj->setCellValue('G' . ($i), $itemData['id7']);
                    $obj->setCellValue('H' . ($i), $itemData['id8']);
                    $obj->setCellValue('I' . ($i), $itemData['id9']);
                    $obj->setCellValue('J' . ($i), $itemData['id10']);
                    $obj->setCellValue('K' . ($i), $itemData['id11']);
                    $obj->setCellValue('L' . ($i), $itemData['id12']);
                    $obj->setCellValue('M' . ($i), $itemData['id13']);
                    $i++;
                }
                $objPHPExcel->getActiveSheet()->setTitle('test');
                $objPHPExcel->setActiveSheetIndex(0);
                //ob_end_clean();//清除缓冲区,避免乱码
                header('Content-Type: application/vnd.ms-excel');
                header('Content-Disposition: attachment;filename="test_' . date(YmdHis) . '.xls"');
                header('Cache-Control: max-age=0');
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

                $objWriter->save('php://output');
                exit;

乱码:

��ࡱ�;�� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� !"#$%&'����)+�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Oh��+'��0�@Hh�� ���Untitled SpreadsheetUnknown CreatorUnknown Creator@�!��d�@�!��d� � ��B�=�%r8X"1��Calibri��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � ��� � � � �"� �����8�������������������������������3f������ff���f����������������������������������̙��̙3f�3���������fff����3f3�f333�3�3f33�333�V�b�V�b TRh���g���8 �OeP Bio-E�g�jsTu� }�S�m &v���N�(500ml)S���l6q�v%�2��%��^�� �pending-ߘ�T u��4l�g Z���PN �~�_��PNju�w�i �e��4l�g 5�eň�US�g150-250KQ �+x��h�| �_ޏ�c��%��^�� �ߘ�T u�� Z���PN wmWS�~�_(g�t [rvY(g�t 2Nň �US�g�~500-1200KQ �S�� � ��+������&ffffff�?'ffffff�?(�?)�?�"dXX333333�?333333�?U}}}}}}}}}} } }}��@�y@@� � �c@�?@@ �4�A ��f�A@��A� �@@�@� � ������R@�����yP@@@ X�A 8�A�\[�A� �@��@� � �A@fffff�=@@@ X\�A 8�A��[�A� >�@d��d��gg����� ����՜.��+,��0�HPX`hp x�� WorksheetFeuilles de calculRoot Entry�������� �F�!��d��!��d�SummaryInformation(���� �F�Workbook������������ �F�DocumentSummaryInformation8������������ �F(�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

和网上的教程一样,但是执行到“$objWriter->save('php://output');”就乱码,也没生成文件,求指点,谢谢!

阅读 4k
4 个回答

在save之前执行ob_clean()清除缓冲区

直接复制你的代码,执行导出,没有得到乱码。如图:
图片描述

请检查你的PHP文件编码是不是UTF-8无BOM格式。

乱码是由于你的输出缓冲区不是“干净”的,需要清除一下
ob_clean()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题