public function generate_excel_one($data=array()){
// 导出Exl
import("PHPExcel.PHPExcel");
import("PHPExcel.PHPExcel.Worksheet.Drawing");
//import("PHPExcel.PHPExcel.Writer.Excel2007");
$objPHPExcel = new \PHPExcel();
//$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$objActSheet = $objPHPExcel->getActiveSheet();
// 水平居中(位置很重要,建议在最初始位置)
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objActSheet->setCellValue('A1', '序号');
$objActSheet->setCellValue('B1', '创建时间');
$objActSheet->setCellValue('C1', '分享模块');
$objActSheet->setCellValue('D1', '分享文案');
$objActSheet->setCellValue('E1', '背景图片');
$objActSheet->setCellValue('F1', '分享微信图片');
$objActSheet->setCellValue('G1', '生成海报图片');
$objActSheet->setCellValue('H1', 'APP&小程序');
$objActSheet->setCellValue('I1', '操作账号');
// 设置个表格宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
// 垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$dir_mk=PUBLIC_PATH . '/download_temp/';
if (!is_dir($dir_mk)) {
@mkdir($dir_mk, 0755, true);
}
foreach((array)$data as $k=>$v){
$k +=2;
$objActSheet->setCellValue('A'.$k, $v['share_management_id']);
$objActSheet->setCellValue('B'.$k, $v['create_time']);
$objActSheet->setCellValue('C'.$k, $v['share_module_name']);
$objActSheet->setCellValue('D'.$k, $v['share_article']);
if(!empty($v['share_background_img'])) {
$objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
$temp_img_1 = $this->download($v['share_background_img'], PUBLIC_PATH . '/download_temp/');//background
$local_pic_path_1 = $dir_mk . $temp_img_1;
if (file_exists($local_pic_path_1)) {
// 图片生成 poster
$objDrawing[$k]->setPath($local_pic_path_1);
// 设置宽度高度
$objDrawing[$k]->setHeight(80);//照片高度
$objDrawing[$k]->setWidth(80); //照片宽度
//设置图片要插入的单元格
$objDrawing[$k]->setCoordinates('E' . $k);
// 图片偏移距离
$objDrawing[$k]->setOffsetX(0);
$objDrawing[$k]->setOffsetY(0);
$objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());
}
}
if(!empty($v['share_wechat_img'])) {
$objDrawing_k[$k] = new \PHPExcel_Worksheet_Drawing();
$temp_img_2 = $this->download($v['share_wechat_img'], PUBLIC_PATH . '/download_temp/');//wechat
$local_pic_path_2 = $dir_mk .$temp_img_2;
if (file_exists($local_pic_path_2)) {
// 图片生成 poster
$objDrawing_k[$k]->setPath($local_pic_path_2);
// 设置宽度高度
$objDrawing_k[$k]->setHeight(80);//照片高度
$objDrawing_k[$k]->setWidth(80); //照片宽度
//设置图片要插入的单元格
$objDrawing_k[$k]->setCoordinates('F' . $k);
// 图片偏移距离
$objDrawing_k[$k]->setOffsetX(0);
$objDrawing_k[$k]->setOffsetY(0);
$objDrawing_k[$k]->setWorksheet($objPHPExcel->getActiveSheet());
}
}
if(!empty($v['share_poster_img'])) {
$objDrawing_kk[$k] = new \PHPExcel_Worksheet_Drawing();
$temp_img = $this->download($v['share_poster_img'], PUBLIC_PATH . '/download_temp/');//poster
$local_pic_path = $dir_mk . $temp_img;
if (file_exists($local_pic_path)) {
// 图片生成 poster
$objDrawing_kk[$k]->setPath($local_pic_path);
// 设置宽度高度
$objDrawing_kk[$k]->setHeight(80);//照片高度
$objDrawing_kk[$k]->setWidth(80); //照片宽度
//设置图片要插入的单元格
$objDrawing_kk[$k]->setCoordinates('G' . $k);
// 图片偏移距离
$objDrawing_kk[$k]->setOffsetX(0);
$objDrawing_kk[$k]->setOffsetY(0);
$objDrawing_kk[$k]->setWorksheet($objPHPExcel->getActiveSheet());
}
}
// 表格内容
$objActSheet->setCellValue('H'.$k, $v['share_platform']);
$objActSheet->setCellValue('I'.$k, $v['admin_account_number']);
// 表格高度
$objActSheet->getRowDimension($k)->setRowHeight(80);
}
$fileName = '后台创建分享列表';
$date = date("Y-m-d",time());
$fileName .= "_{$date}.xls";
$fileName = iconv("utf-8", "gb2312", $fileName);
//重命名表
// $objPHPExcel->getActiveSheet()->setTitle('test');
//设置活动单指数到第一个表,所以Excel打开这是第一个表
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$fileName\"");
header('Cache-Control: max-age=100');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); //文件通过浏览器下载
// END
}
private function download($url, $path = './public/download_temp/')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 90);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
$file = curl_exec($ch);
curl_close($ch);
$filename = pathinfo($url, PATHINFO_BASENAME);
$resource = fopen($path . $filename, 'w');
fwrite($resource, $file);
fclose($resource);
return $filename;
}
好文链接
发表评论