Heim  >  Artikel  >  Backend-Entwicklung  >  thinkphp3.2 und phpexcel perfekter Fall

thinkphp3.2 und phpexcel perfekter Fall

不言
不言Original
2018-04-10 17:21:541381Durchsuche

Der in diesem Artikel mit Ihnen geteilte Inhalt ist ein perfekter Fall von thinkphp3.2 und phpexcel, der einen gewissen Referenzwert hat. Freunde in Not können sich darauf beziehen

<br>

<br>
// 导出exl
    public function look_down(){
        $id = I('get.id');
        $m = M ('offer_goods');
        $where['offer_id'] = $id;
        $data = $m->field('goods_id,goods_sn,goods_name,barcode,goods_type,price')->select();        
        // 导出Exl
        import("Org.Util.PHPExcel");
        import("Org.Util.PHPExcel.Worksheet.Drawing");
        import("Org.Util.PHPExcel.Writer.Excel2007");
        $objPHPExcel = new \PHPExcel();
        $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
    
        $objActSheet = $objPHPExcel->getActiveSheet();        
        // 水平居中(位置很重要,建议在最初始位置)
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        
        $objActSheet->setCellValue('A1', '商品货号');
        $objActSheet->setCellValue('B1', '商品名称');
        $objActSheet->setCellValue('C1', '商品图');
        $objActSheet->setCellValue('D1', '商品条码');
        $objActSheet->setCellValue('E1', '商品属性');
        $objActSheet->setCellValue('F1', '报价(港币)');        // 设置个表格宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(80);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);        
        // 垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);        
        // 处理表数据
        foreach($data as $k=>$v){
            $k +=2;
            $objActSheet->setCellValue('A'.$k, $v['goods_sn']);    
            $objActSheet->setCellValue('B'.$k, $v['goods_name']);    
                
            
            $img = M('goods')->where('goods_id = '.$v['goods_id'])->field('goods_thumb')->find();            // 图片生成
            $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
            $objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']);            // 设置宽度高度
            $objDrawing[$k]->setHeight(80);//照片高度
            $objDrawing[$k]->setWidth(80); //照片宽度
            /*设置图片要插入的单元格*/
            $objDrawing[$k]->setCoordinates('C'.$k);            // 图片偏移距离
            $objDrawing[$k]->setOffsetX(12);
            $objDrawing[$k]->setOffsetY(12);
            $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());            
            // 表格内容
            $objActSheet->setCellValue('D'.$k, $v['barcode']);    
            $objActSheet->setCellValue('E'.$k, $v['goods_type']);    
            $objActSheet->setCellValue('F'.$k, $v['price']);                
            // 表格高度
            $objActSheet->getRowDimension($k)->setRowHeight(80);
            
        }
        
        $fileName = '报价表';
        $date = date("Y-m-d",time());
        $fileName .= "_{$date}.xls";

        $fileName = iconv("utf-8", "gb2312", $fileName);        //重命名表        // $objPHPExcel->getActiveSheet()->setTitle('test');        //设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objPHPExcel->setActiveSheetIndex(0);
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename=\"$fileName\"");
        header('Cache-Control: max-age=0');

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); //文件通过浏览器下载        // END    
    }
<br>

<br>

<br>

<br>

Hinweise: <br>1.phpexcel Download-Adresse: http:/ / phpexcel.codeplex.com/<br><br>2. Legen Sie die Dateien im Klassenverzeichnis (PHPExcel.php und PHPExcel-Ordner) im ThinkPHPLibraryOrgUtil-Verzeichnis ab (Sie können sie auch in anderen Verzeichnissen ablegen, sofern sie geladen werden können Klassen) kein Problem). Und ändern Sie PHPExcel.php in PHPExcel.class.php (dieser Schritt ist sehr wichtig, die PHP-Datei, die Sie laden müssen, muss in xxx.class.php geändert werden) <br><br>3. Importieren Sie die Klasse manuell (bitte beachten Sie). "" symbol)<br>import("Org.Util.PHPExcel");<br>$objPHPExcel = new PHPExcel();<br>(Ich habe versucht, die Klasse automatisch zu laden, was problematischer ist, da alle PHPExcel-Dateien müssen auf „namespace OrgUtil;“ hinzugefügt werden, also laden Sie die Klasse einfach manuell) <br><br>4. Legen Sie horizontale Zentrierung, vertikale Zentrierung, Höhe usw. fest. Achten Sie auf die Position am Ende. Fügen Sie es in den Kopf ein, und die erste Zeile wird wirksam (der obige Code wird in der ersten Zeile wirksam, wenn er in foreach platziert wird, wird die nächste Zeile wirksam). <br><br>5. Einführung in den Import. import("Org.Util.PHPExcel.Writer.Excel2007"); Dateispeicherort: OrgUtilPHPExcelWriterExcel2007.class.php

6. Die Bildadresse muss lokal sein. <br>k]->setPath('./Upload/'.$img['goods_thumb']); Bildspeicherort: Installationsverzeichnis/Upload/xxx

<br>Anfällige Probleme: <br> 1. „Klasse xxx nicht gefunden“ Wenn der Klassenimport nicht erfolgreich ist, können Sie zunächst eine Funktion ss(){} in xxx.class.php einfügen und dann xx->ss() ausgeben, um das Ergebnis anzuzeigen.

Analyseadresse: http://www.thinkphp.cn/code/2112.html

<br>

转自:http://www.cnblogs.com/wesky/p/5624002.html

<br>

Das obige ist der detaillierte Inhalt vonthinkphp3.2 und phpexcel perfekter Fall. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn