PHPExcel将数据库内的数据导出成excel文件

        前两天用到了将excel文件导入至数据库中,果不其然,很快就用到了将数据库内数据导出成excel文件,在网上浏览学习了很多网站之后终于完成了,今天就分享一个小实例。

一:上干货

        1.老样子,数据库!!(数据库代码参考:https://blog.csdn.net/qq_42751377/article/details/81141104

        2.PHPExcel插件置于Vendor目录下。

        3.创建demo项目

        4.IndexController.class.php

<?php

/**
*
* 导入Excel文件数据到MySQL数据库
*/
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
  
  /**
   * 显示上传表单html页面
   */
  public function index() {
    $this->display();
  }
  

  public function exportExcel($expTitle,$expCellName,$expTableData){
    $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
    $fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
    $cellNum = count($expCellName);
    $dataNum = count($expTableData);
    // dump($expTableData);
    // dump($expCellName[0][0]);
    // dump($expTableData[0][$expCellName[0][0]]);die;

    vendor("PHPExcel.PHPExcel");
      
    $objPHPExcel = new \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');//合并单元格
    // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));
    for($i=0;$i<$cellNum;$i++){
      $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
    }
    // Miscellaneous glyphs, UTF-8
    for($i=0;$i<$dataNum;$i++){
      for($j=0;$j<$cellNum;$j++){
        $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
      }
    }

    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
  }

  /**
   *
   * 导出Excel
   */
  function expUser(){//导出Excel
    $xlsName  = "User";
    $xlsCell  = array(
    array('pid','序列'),
    array('pname','名字'),
    array('pprice','价格'),
    array('pcount','个数')
    );
    $xlsModel = M('Info');

    $xlsData  = $xlsModel->Field('pid,pname,pprice,pcount')->select();
    // dump($xlsData);
    $this->exportExcel($xlsName,$xlsCell,$xlsData);
      
  }

}
?>

        5.index.html(小例子,一个a标签即可)

扫描二维码关注公众号,回复: 3641990 查看本文章
<a href="{:U('Index/expUser')}" >导出数据并生成excel</a>

        6.测试

二:总结

        文章说明:因学习时浏览网站较多且参考网站较多,如有参考内容转载绝非有意,若有侵犯,还请告知。

        问题总结:找不到 PHPExcel() 类,尝试使用         new \PHPExcel();          \PHPExcel_IOFactory

                          可以下载excel,但内容缺少数据,最后发现在 expUser() 方法中 array数组内字段名要用小写

                          还是那样,很多小问题都可以通过尝试使用 dump();die; 来测试,保证代码走得通的同时还可以检查变量的值的准确性。

        文章若有错误或问题,欢迎指出。

猜你喜欢

转载自blog.csdn.net/qq_42751377/article/details/81155313
今日推荐