一、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;
}
導出結果:
三、導入示例:
略