PHP 技巧 * excel 操作

一、composer 安裝 PHPExcel

以ThinkPHP5.1 爲例,在根目錄使用 composer 得到 phpexcel 擴展類庫(自動保存至 vendor 文件夾):

composer require phpoffice/phpexcel

二、導出示例:

    public function testExcel(){
        $data = [
            ["id" => 1, "username" => "給你最好的我丶", "score" => 92],
            ["id" => 2, "username" => "擡首輕笑", "score" => 95],
            ["id" => 3, "username" => "嘉恆帥比等你王者歸來", "score" => 74]
        ];

        $objPHPExcel = new \PHPExcel();
        // 所有單元格設置爲水平居中
        $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal("center");
        // 所有單元格設置爲垂直居中
        $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical("center");
        // A1:C1 合併並插入比賽名稱
        $objPHPExcel->setActiveSheetIndex(0)->mergeCells('A1:C1')->setCellValue('A1', "我是標題");
        // A1:C2 加粗
        $objPHPExcel->getActiveSheet()->getStyle('A1:C2')->getFont()->setBold(true);
        // 第二行插入表頭
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A2', 'ID')->setCellValue('B2', '用戶名')->setCellValue('C2', '得分');

        $a_strlen = $b_strlen = $c_strlen = 20;
        $count = count($data);
        for ($i = 3; $i <= $count+1; $i++) {
            // 設置內容
            $v = $data[$i-3];
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $v["id"]);
            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $v["username"]);
            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $v["score"]);

            // 計算最長文本長度
            $a_strlen = $a_strlen < strlen($v["id"]) ? strlen($v["id"]) : $a_strlen;
            $b_strlen = $b_strlen < strlen($v["username"]) ? strlen($v["username"]) : $b_strlen;
            $c_strlen = $c_strlen < strlen($v["score"]) ? strlen($v["score"]) : $c_strlen;
        }

        // 自適應單元格寬度
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth($a_strlen);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth($b_strlen);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth($c_strlen);

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $test_path = Env::get('ROOT_PATH') . "test.xls";
        $objWriter->save($test_path);

        echo "保存位置:" . $test_path;
    }

導出結果:

 三、導入示例:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章