自己測試,在yii2中實現PHPExcel資料匯出例項
阿新 • • 發佈:2019-02-01
<?php
class StudentService extends StudentExcelService{
public funciton exportStudentMessage()
{
$this->filename = "學生資訊表".date("Y-m-d");
$first_row_array = array(
"id"=>"編號",
"name"=>"姓名",
"sex"=>"性別",
"age" =>"年齡"
);
#獲取匯出資料
$list = $this->getStudentInfo();
list($objPHPExcel, $excel_row_char, $line_num) = $this->setFirstLine($first_row_array, $title = '學生資訊');
#設定表格資料內容
$this->setStudentExport($list, $excel_row_char, $objPHPExcel, $line_num );
#匯出excel檔案
$this->exportListToFile($objPHPExcel);
}
public function setFirstLine($first_row_array, $title)
{
$row_char = 'A';
$first_line_num = '2';
$objPHPExcel = new \PHPExcel();
$objPHPExcel
->getProperties()
->setCreator($title . "匯出")
->setLastModifiedBy($title . "匯出")
->setTitle($title . "匯出")
->setSubject($title . "匯出")
->setDescription($title . "匯出")
->setKeywords("excel")
->setCategory("result file");
#設定樣式,寬度,居中
$dao = $objPHPExcel->setActiveSheetIndex(0);
$excel_row_char = array();
foreach ($first_row_array as $key => $value) {
$excel_row_char[$key] = $row_char;
$dao->setCellValue($row_char . $first_line_num, $value);
$row_char++;
}
return array($objPHPExcel, $excel_row_char, $first_line_num);
}
public function setStudentExport($data, $excel_row_char, \PHPExcel $objPHPExcel, $line_num)
{
$styleArray1 = array(
'alignment' => array(
'horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
),
);
$dao = $objPHPExcel->setActiveSheetIndex(0);
$dao->getDefaultColumnDimension()->setWidth(15);
$dao->getColumnDimension('B')->setWidth(30);
$dao->getColumnDimension('C')->setWidth(60);
$dao->getRowDimension('1')->setRowHeight(22);
$dao->getRowDimension('2')->setRowHeight(20);
$dao->getStyle('A1')->getFont()->setBold(true);
$dao->getStyle('A1')->getFont()->setSize(16);
$dao->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$dao->getStyle('A2:D2')->getFont()->setBold(true);
$dao->getStyle('A2:D2')->getFont()->setSize(10);
$dao->getStyle('A2:D2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$dao->getStyle('A2:D2')->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
$dao->mergeCells('A1:D1');
$dao->setCellValue('A1', '學生資訊表');
$dao->freezePane('A3');
$objPHPExcel->getActiveSheet()->getStyle('A:D')->applyFromArray($styleArray1);
foreach ($data as $key => $list) {
$line_num += 1;
$dao->setCellValueExplicit($excel_row_char['id'] . $line_num, $list['id'])
->setCellValue($excel_row_char['name'] . $line_num, $list['name'])
->setCellValue($excel_row_char['age'] . $line_num, $list['age'])
->setCellValue($excel_row_char['sex'] . $line_num, $list['sex']);
unset($data[$key]);
}
}
}