>  기사  >  php教程  >  PHPExcel을 이용한 내보내기 기능에 대한 간략한 소개

PHPExcel을 이용한 내보내기 기능에 대한 간략한 소개

WBOY
WBOY원래의
2016-08-04 08:56:221372검색

이전에 어떻게 내보내는지 몰라서 DEMO나 케이스를 찾아봤지만 여전히 기능이 작동하지 않더군요. 한편으로는 제가 너무 멍청한 것인지도, 또 한편으로는 초보자에게 그런 느낌이 들었습니다. , 아마도 그렇게 해야 했을 것입니다(어, 여기에 코드를 복사하고, 여기에 파일을 넣고, 여기서 변경하면 됩니다.) 어쩌면 마스터는 게시할 때 무의식적으로 몇 가지 작은 세부 사항을 무시했을 수도 있습니다. - 푸드프로그래머 교육은 지금)(물론 저 포함)이므로 다른 초보분들도 이 글을 보고 응급상황에 대처할 수 있기를 바라면서 저만의 초보 이해를 바탕으로 이 글을 작성합니다. 이제 좀 더 읽어보니 뉴비들은 아직 축적과 코드 축적에 시간이 필요하다는 걸 조금은 이해하게 되었습니다.
PHPExcel 내보내기(이제 내보내기에 대해서만 이야기하겠습니다)이므로 당연히 이 파일이 필요하니 가져가세요(http://phpexcel.codeplex.com/)
다운로드 후 어디에 넣나요? 일반적으로 TP는 타사 클래스 라이브러리에 배치됩니다(ThinkPHP 프레임워크 및 애플리케이션 프로젝트 클래스 라이브러리를 제외한 다른 클래스 라이브러리 참조). 일반적으로 Smarty, Zend 및 타사 시스템이나 제품에서 제공되는 클래스 라이브러리 다른 시스템...) 일반적으로 여기 ThinkPHP/Library/Vender 아래에 배치됩니다.
그런 다음 프런트엔드 및 백엔드 파일과 동일한 수준의 Common 아래 function.php에 다음 코드를 복사해야 합니다PHPExcel을 이용한 내보내기 기능에 대한 간략한 소개/**<code class="prettyprint linenums lang-php">/**<br>  * 导出到EXCEL <br>  * @param type $expTitle<br>  * @param type $expCellName<br>  * @param type $expTableData<br>  */<br> function exportExcel($expTitle, $expCellName, $expTableData) {<br>     $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); //文件名称<br>     $fileName = $expTitle . date('_YmdHis'); //or $xlsTitle 文件名称可根据自己情况设定<br>     $cellNum = count($expCellName);<br>     $dataNum = count($expTableData);<br> <br>     vendor("PHPExcel");<br> <br>     $objPHPExcel = new PHPExcel();<br>     $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');<br> //  $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1'); //合并单元格<br>     for ($i = 0; $i < $cellNum; $i ) {<br /> $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '1', $expCellName[$i][1]);<br>     }<br>     // Miscellaneous glyphs, UTF-8<br>     for ($i = 0; $i < $dataNum; $i ) {<br /> for ($j = 0; $j < $cellNum; $j ) {<br /> $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i   2), $expTableData[$i][$expCellName[$j][0]]);<br>         }<br>     }<br> <br>     header('pragma:public');<br>     header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');<br>     header("Content-Disposition:attachment;filename=$fileName.xls"); //attachment新窗口打印inline本窗口打印<br>     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');<br>     $objWriter->save('php://output');<br>     exit;<br> }  * 导到EXCEL   * @param 유형 $expTitle  * @param 유형 $expCellName
 * @param 유형 $expTableData  * / 함수 내보내기Excel($expTitle, $expCellName, $expTableData) { $xlsTitle = iconv('utf-8', 'gb2312', $expTitle) //파일 이름 $fileName = $expTitle .date('_YmdHis'); //또는 $xlsTitle 파일명은 상황에 맞게 설정하시면 됩니다 $cellNum = 개수($expCellName); $dataNum = 개수($expTableData); Vendor("PHPExcel"); $objPHPExcel = 새로운 PHPExcel(); $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', ' L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X' , 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', ' AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW' , 'AX', 'AY', 'AZ'); // $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1') //셀 병합 for ($i = 0; $i < $cellNum; $i ) {<🎜>           $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '1', $expCellName[$i][1]); } // 기타 글리프, UTF-8 for ($i = 0; $i < $dataNum; $i ) {<🎜> for ($j = 0; $j < $cellNum; $j ) {<🎜>                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i 2), $expTableData[$i][$expCellName[$j][0]]);         } } 헤더('pragma:public'); Header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"'); Header("Content-Disposition:attachment;filename=$fileName.xls"); //첨부 파일의 새 창에 인쇄, 이 창에 인라인 인쇄 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); 나가세요; }vendor("PHPExcel");위 코드의 경우 파일이 여기에 없으면 변경해야 합니다. 여기에 추가하겠습니다. 사용자 정의 스타일(예: 색상 표시가 있는 텍스트 내보내기 등)을 내보내고 추가해야 하는 경우 다음과 같이 주석 처리된 코드 조각을 여기에 추가해야 합니다. URL을 직접 작성해야 합니까? 자, 원하는 모든 것이 여기에 있습니다 http://blog.csdn.net/diandian_520/article/details/7827038. 어떤 행과 열을 작성해야 하는지 주의하세요. 변경)
물론 이는 공용 내보내기 기능이므로 여러 개의 대체 테이블을 내보내려면 위의 코드를 다시 복사하여 이름을 변경하고 호출해야 합니다.
다음은 C /*<br> 코드입니다. * 테스트<br> */<br> 공개 함수 텍스트(){<br> //필요한 데이터 가져오기<br> $res=M('주문')->select();<br> $export=I('export');//내보내기 명령을 실행하는 값<br>           if ($export==1){                                            $ Xlsname = "주문 목록" // 테이블 이름 <br> ~ ~                           ​                       array('ddh','주문 번호'),<br>                      array('xdsj','주문 시간'),<br>                      배열('dgje','주문 금액'), <br>                       array('yhje','할인 금액'),<br>                     );<br>                         $xlsData=array() <br> foreach($res를 $key=>$val로){<br>                     array_push($xlsData, array(//여기서 내보내야 하는 내용, 키 이름은 위의 필드 키 이름과 일치해야 합니다. <br> 'ddh'=>" ".$val[ordersn],<br> 'xdsj'=>date('Y-m-d H:i:s',$val[createtime]),<br> 'dgje'=>$val[수수료],<br> 'yhje'=>$val[할인 가격],<br>                                              )); ~                                                  ​  ~ ~           importExcel($xlsName,$xlsCell,$xlsData);//함수에 작성된 함수가 호출되는 곳입니다. <br>                   죽다() <br>               }OK, 끝났습니다. 지금 시도해 보세요! ! !
(뭔가 놓친거 같은 느낌이 듭니다. 혹시 문제점을 발견하신 분이나 더 좋은 방법이 있으시면 추가해서 알려주시면 감사하겠습니다...)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.