Maison  >  Article  >  développement back-end  >  Implémentation de l'exportation phpexcel avec les images générées dans thinkphp3.2

Implémentation de l'exportation phpexcel avec les images générées dans thinkphp3.2

不言
不言original
2018-06-07 11:57:341948parcourir

Cet article présente principalement l'exemple d'export phpexcel avec des images générées dans thinkphp3.2. Le contenu est assez bon, je vais le partager avec vous maintenant et le donner comme référence.

Téléchargez d'abord PHPEXCEL

Placez les fichiers du répertoire Classes (PHPExcel.php et dossier PHPExcel) dans le répertoire ThinkPHPLibraryOrgUtil

PHPExcel.php et renommez-le : PHPExcel class. .php

// 导出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  

  }

Centrage horizontal, centrage vertical, hauteur et autres paramètres. Faites attention à la position. Si vous le mettez à la fin, ce qui suit prendra effet. Mettez-le dans l'en-tête, et la première ligne prendra effet (le code ci-dessus prendra effet sur la première ligne, s'il est placé dans foreach, la ligne suivante prendra effet).

introduction à l'importation. import("Org.Util.PHPExcel.Writer.Excel2007"); Emplacement du fichier : OrgUtilPHPExcelWriterExcel2007.class.php

L'adresse de l'image doit être locale. objDrawing[ objDrawing[k]->setPath('./Upload/'.$img['goods_thumb']); Emplacement de l'image : Répertoire d'installation/Upload/xxx

Recommandations associées :

PHP télécharge des fichiers Excel pour importer des données dans les données MySQL


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn