1. 程式人生 > >PHPExcel將資料庫內的資料匯出成excel檔案

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標籤即可)

<a href="{:U('Index/expUser')}" >匯出資料並生成excel</a>

 

        6.測試

 

二:總結

        文章說明:因學習時瀏覽網站較多且參考網站較多,如有參考內容轉載絕非有意,若有侵犯,還請告知。

        問題總結:找不到 PHPExcel() 類,嘗試使用         new \PHPExcel();          \PHPExcel_IOFactory

                          可以下載excel,但內容缺少資料,最後發現在 expUser() 方法中 array陣列內欄位名要用小寫

                          還是那樣,很多小問題都可以通過嘗試使用 dump();die; 來測試,保證程式碼走得通的同時還可以檢查變數的值的準確性。

        文章若有錯誤或問題,歡迎指出。