使用组件
composer.json中添加该组件,执行composer update命令
"require": {
"phpoffice/phpspreadsheet": "^1.9"
},
1、导出列表数据
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
public function export($list){
$title = '职位招聘信息列表';
$title_arr = ['职位类别','职位名称','城市','部门','类型','性质','薪资','人数','投递邮箱','截止时间', '岗位职责','任职资格','发布状态'];
$cell_arr = range('A','Z');
$spreadsheet = new Spreadsheet();
$spreadsheet->getActiveSheet()->setTitle($title);
foreach ($title_arr as $k => $v) {
$spreadsheet->getActiveSheet()->getStyle($cell_arr[$k] . 1)->getFont()->setBold(true);//标题字段加黑加粗
$spreadsheet->getActiveSheet()->getColumnDimension($cell_arr[$k])->setWidth($cell_arr[$k] > 'H' ? 25 : 15);//设置宽度
$spreadsheet->getActiveSheet()->setCellValue($cell_arr[$k] . 1, $v);//设置标题
}
$spreadsheet->setActiveSheetIndex(0);
//超过8位数的纯数字字符串,导出表格会默认为科学计数法。解决办法是在字段末尾拼接一个" ",空格字符串即可。
foreach ($list as $key => $val) {
$tmp = $key + 2;
$spreadsheet->getActiveSheet()->setCellValue('A' . $tmp, $val['category']);
$spreadsheet->getActiveSheet()->setCellValue('B' . $tmp, $val['position']);
$spreadsheet->getActiveSheet()->setCellValue('C' . $tmp, $val['city']);
$spreadsheet->getActiveSheet()->setCellValue('D' . $tmp, $val['department']);
$spreadsheet->getActiveSheet()->setCellValue('E' . $tmp, $val['type']);
$spreadsheet->getActiveSheet()->setCellValue('F' . $tmp, $val['nature']);
$spreadsheet->getActiveSheet()->setCellValue('G' . $tmp, $val['salary']);
$spreadsheet->getActiveSheet()->setCellValue('H' . $tmp, $val['num']);
$spreadsheet->getActiveSheet()->setCellValue('I' . $tmp, $val['email']);
$spreadsheet->getActiveSheet()->setCellValue('J' . $tmp, $val['end_date']);
$spreadsheet->getActiveSheet()->getColumnDimension('K&#