public function export_excel($ids=null){
if(empty($ids)){
$this->error('请先选择数据');
}
$subQuery = Db::table('wh_quality_result')
->where('goods_result',3)
->group('goods_sku')
->buildSql();
$list = Db::table('wh_error_goods_quality')->alias('wegq')
->join([$subQuery=>'wqr'],'wegq.into_store_code = wqr.into_store_code and wegq.goods_sku = wqr.goods_sku','left')
->join(['wh_quality_param'=>'wqp'],'wqp.id = wqr.param_id','left')
->field('wegq.*,wqp.grade,wqp.num,wqr.img_path,wqp.project')
->where('wegq.type',3)
->where('wegq.id','in',$ids)
->order('wegq.id')
->select();
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getActiveSheet()->SetCellValue('A' . 1, '商品sku');
$objPHPExcel->getActiveSheet()->SetCellValue('B' . 1, '等级');
$objPHPExcel->getActiveSheet()->SetCellValue('C' . 1, '序号');
$objPHPExcel->getActiveSheet()->SetCellValue('D' . 1, '问题');
$objPHPExcel->getActiveSheet()->SetCellValue('E' . 1, '图片');
$num=2;
foreach ($list as $k => $v) {
$objPHPExcel->getActiveSheet()->SetCellValue('A' . $num, $v['goods_sku']);
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $num, $v['grade']);
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $num, $v['num']);
$objPHPExcel->getActiveSheet()->SetCellValue('D' . $num, $v['project']);
$objDrawing = new \PHPExcel_Worksheet_MemoryDrawing();
$image = $v['img_path'];
// 截取图片的格式,用不同的方法
$img_type = substr($image, -3);
if ($img_type == 'jpg' ||$img_type == 'peg') {
$img = @imagecreatefromjpeg('http://' . $_SERVER['HTTP_HOST'].$image);
}else if ($img_type == 'png') {
$img = @imagecreatefrompng('http://' . $_SERVER['HTTP_HOST'].$image);
}else if ($img_type == 'gif') {
$img = @imagecreatefromgif('http://' . $_SERVER['HTTP_HOST'].$image);
}
$objDrawing->setImageResource($img);
$objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法
$objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(40);
$objDrawing->setWidth(60);
$objDrawing->setCoordinates('E' . $num);
$objDrawing->setOffsetX(8);
$objDrawing->setOffsetY(8);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objPHPExcel->getActiveSheet()->getRowDimension($num)->setRowHeight(80);
//objPHPExcel->getActiveSheet()->SetCellValue('E' . $num, $v['img_path']);
$num++;
}
// 文件名称
$fileName = "质检不合格" . date('Ymdhms', time());
$xlsName = iconv('utf-8', 'gb2312', $fileName);
// 设置工作表名
$objPHPExcel->getActiveSheet()->setTitle('sheet');
//下载 excel5与excel2007
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
ob_end_clean(); // 清除缓冲区,避免乱码
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl;charset=UTF-8");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header("Content-Disposition:attachment;filename=" . $xlsName . ".xlsx");
header("Content-Transfer-Encoding:binary");
$objWriter->save("php://output");
}
php 导出带图片的表格
最新推荐文章于 2024-07-16 08:10:25 发布