之前使用的是PHPExcel来做PHP程序的数据导出,但是ThinkPHP5版本就改成了PhpSpreadsheet,文档因为是英文的所以看不太懂,今天解决的是PhpSpreadsheet 导出图片到 Excel。
代码1:
/**
* [export 导出数据]
*/
public function export() {
//查询数据
$data = $this->model->field('id,user_id,thumb,content,create_time')->with(['user'])->order('create_time desc')->select();
//处理数据
if(!empty($data)){
foreach ($data as $key => $value) {
if(!empty($value['thumb'])){
$data[$key]['thumb'] = json_decode($value['thumb'], true);
}
//ip
/*if(isset($value['ip']) && !empty($value['ip'])){
$data[$key]['ip'] = getIpInfo($value['ip']);
}*/
}
}
//创建一个新的excel文档
$newExcel = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
//获取当前操作sheet的对象
$objSheet = $newExcel->getActiveSheet();
//设置当前sheet的标题
$objSheet->setTitle('意见反馈');
//设置宽度为true,不然太窄了
$newExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$newExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$newExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$newExcel->getActiveSheet()->getColumnDimension('D')->setWidth(40);
$newExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);
//设置第一栏的标题
$objSheet->setCellValue('A1', 'ID')
->setCellValue('B1', '用户')
->setCellValue('C1', '图片')
->setCellValue('D1', '内容')
->setCellValue('E1', '时间');
//第二行起,每一行的值,setCellValueExplicit是用来导出文本格式的。
//->setCellValueExplicit('C' . $key, $val['admin_password']PHPExcel_Cell_DataType::TYPE_STRING),