excel表格

<?php
// -------------------------------excel表格下載----------------------------------

excel下載:
      github   https://github.com/PHPOffice/PHPExcel
      使用 Classes 目錄引入

推薦示例:
      http://www.oschina.net/code/snippet_112754_15765
      https://jingyan.baidu.com/article/915fc414f4c2e451384b205c.html





getExcel('excel', [
    '學號', '姓名', '性別', '年齡', '班級'
], [
    ['1', '小,,,,ssss,,www,王', '男', '20', '100'],
    ['2', '小李', '男', '20', '101'],
    ['3', '小張', '女', '20', '102'],
    ['4', '小趙', '女', '20', '103']
]);

/**
 * excel 下載:github   https://github.com/PHPOffice/PHPExcel
 * 示例:http://www.oschina.net/code/snippet_112754_15765
 * @param $fileName string 文件名
 * @param $headArr array 標題
 * @param $data array 數據
 */
function getExcel($fileName = 'excel', $headArr, $data)
{
    // 配置
    error_reporting(E_ALL);
    set_time_limit(0);
    date_default_timezone_set('PRC');
    $excel_dir = $_SERVER['DOCUMENT_ROOT'] . '/Classes/';// 根目錄(實際環境中注意修改目錄)

    // 默認加載無需修改
    include $excel_dir . 'PHPExcel.php';
    require_once $excel_dir . 'PHPExcel/Reader/Excel2007.php';
    require_once $excel_dir . 'PHPExcel/Reader/Excel5.php';
    include_once $excel_dir . 'PHPExcel/IOFactory.php';

    if (empty($data) || !is_array($data)) {
        die("data must be a array");
    }
    if (empty($fileName)) {
        exit;
    }

    //創建新的PHPExcel對象
    $objPHPExcel = new PHPExcel();
    $objProps = $objPHPExcel->getProperties();

    //設置表頭
    $key = ord("A");
    foreach ($headArr as $v) {
        $colum = chr($key);
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
        $key += 1;
    }

    $column = 2;
    $objActSheet = $objPHPExcel->getActiveSheet();
    foreach ($data as $key => $rows) { //行寫入
        $span = ord("A");
        foreach ($rows as $keyName => $value) {// 列寫入
            $j = chr($span);
            $objActSheet->setCellValue($j . $column, $value);
            $span++;
        }
        $column++;
    }

    $fileName = iconv("utf-8", "gb2312", $fileName . '.xlsx');
    //重命名錶
    $objPHPExcel->getActiveSheet()->setTitle('Simple');
    //設置活動單指數到第一個表,所以Excel打開這是第一個表
    $objPHPExcel->setActiveSheetIndex(0);
    //將輸出重定向到一個客戶端web瀏覽器(Excel2007)
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header("Content-Disposition: attachment; filename=\"$fileName\"");
    header('Cache-Control: max-age=0');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save('php://output'); //文件通過瀏覽器下載
    // $objWriter->save($fileName); //腳本方式運行,保存在當前目錄
    exit;
}






excel('學生excel下載', [
    '學號', '姓名', '性別', '年齡', '班級'
], [
    ['1', '小,,,,ssss,,www,王', '男', '20', '100'],
    ['2', '小李', '男', '20', '101'],
    ['3', '小張', '女', '20', '102'],
    ['4', '小趙', '女', '20', '103']
]);

/**
 * excel 下載:github   https://github.com/PHPOffice/PHPExcel
 * 示例:https://jingyan.baidu.com/article/915fc414f4c2e451384b205c.html
 * @param $filenmae string 文件名
 * @param $title array 標題
 * @param $data array 數據
 */
function excel($filename = 'excel', $title, $data)
{
    // 配置
    error_reporting(E_ALL);
    set_time_limit(0);
    date_default_timezone_set('PRC');
    // 引入excel  此處注意路徑
    include $_SERVER['DOCUMENT_ROOT'] . '/Classes/PHPExcel.php';

    // 填充數據
    $excel = new PHPExcel();
    // Excel表格式
    $letter = ['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'];
    //填充表頭信息
    for ($i = 0; $i < count($title); $i++) {
        $excel->getActiveSheet()->setCellValue("$letter[$i]1", "$title[$i]");
    }
    //填充表格信息
    // $i 是縱向位置  $j 是橫向位置
    $i = 2;
    foreach ($data as $key => $value) {
      $j = 0;
      foreach ($value as $k => $v) {
        $excel->getActiveSheet()->setCellValue("$letter[$j]" . $i, "$v");
        $j++;
      }
      $i++;
    }

    $filename = iconv("utf-8", "gb2312", $filename.'.xls');
    //創建Excel輸入對象
    $write = new PHPExcel_Writer_Excel5($excel);
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");;
    header('Content-Disposition:attachment;filename='. $filename);
    header("Content-Transfer-Encoding:binary");
    $write->save('php://output');
    exit;
}

發佈了86 篇原創文章 · 獲贊 18 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章