이전에 어떻게 내보내는지 몰라서 DEMO나 케이스를 찾아봤지만 여전히 기능이 작동하지 않더군요. 한편으로는 제가 너무 멍청한 것인지도, 또 한편으로는 초보자에게 그런 느낌이 들었습니다. , 아마도 그렇게 해야 했을 것입니다(어, 여기에 코드를 복사하고, 여기에 파일을 넣고, 여기서 변경하면 됩니다.) 어쩌면 마스터는 게시할 때 무의식적으로 몇 가지 작은 세부 사항을 무시했을 수도 있습니다. - 푸드프로그래머 교육은 지금)(물론 저 포함)이므로 다른 초보분들도 이 글을 보고 응급상황에 대처할 수 있기를 바라면서 저만의 초보 이해를 바탕으로 이 글을 작성합니다. 이제 좀 더 읽어보니 뉴비들은 아직 축적과 코드 축적에 시간이 필요하다는 걸 조금은 이해하게 되었습니다.
PHPExcel 내보내기(이제 내보내기에 대해서만 이야기하겠습니다)이므로 당연히 이 파일이 필요하니 가져가세요(http://phpexcel.codeplex.com/)
다운로드 후 어디에 넣나요? 일반적으로 TP는 타사 클래스 라이브러리에 배치됩니다(ThinkPHP 프레임워크 및 애플리케이션 프로젝트 클래스 라이브러리를 제외한 다른 클래스 라이브러리 참조). 일반적으로 Smarty, Zend 및 타사 시스템이나 제품에서 제공되는 클래스 라이브러리 다른 시스템...) 일반적으로 여기 ThinkPHP/Library/Vender
아래에 배치됩니다.
그런 다음 프런트엔드 및 백엔드 파일과 동일한 수준의 Common 아래 function.php에 다음 코드를 복사해야 합니다/**<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, 끝났습니다. 지금 시도해 보세요! ! !
(뭔가 놓친거 같은 느낌이 듭니다. 혹시 문제점을 발견하신 분이나 더 좋은 방법이 있으시면 추가해서 알려주시면 감사하겠습니다...)