导出excel,图片地址不能用远程地址,必须下载到本地,用本地地址
public static function exportExcelNewImg($fileName, $headArr, $data, $m_exportType = "Excel2007")
{
if (is_array($headArr) && is_array($data) && !empty($fileName)) {
require_once("Excel/PHPExcel.php");
require_once("Excel/PHPExcel/CachedObjectStorageFactory.php");
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory;
PHPExcel_Settings::setCacheStorageMethod($cacheMethod);
//创建新的PHPExcel对象
$objPHPExcel = new PHPExcel();
$objProps = $objPHPExcel->getProperties();
//
//设置表头
$fixkey = $key = ord("A");
$prefix = '';
foreach ($headArr as $v) {
$colum = chr($key);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($prefix . $colum . '1', $v);
$objPHPExcel->getActiveSheet()->getStyle($prefix . $colum)->getAlignment()->setWrapText(true); // 设置单元格换行(不是自动换行 内容中有\n才会换行)
$objPHPExcel->getActiveSheet()->getColumnDimension($prefix . $colum)->setAutoSize(true); // 设置单元格自动调整宽度
if ($colum == 'Z') {
$key = ord("@");
$prefix = chr($fixkey);
$fixkey++;
}
$key += 1;
}
$column = 2;
$objActSheet = $objPHPExcel->getActiveSheet();
foreach ($data as $key => $rows) { //行写入
$fixkey = $span = ord("A");
$prefix = '';
/*设置表格宽度*/
$objActSheet->getColumnDimension('R')->setWidth(100)->setAutoSize(false);
foreach ($rows as $keyName => $value) {// 列写入
$j = chr($span);
if (isset($value['image']) && is_array($value['image']) && !empty($value['image'])) {
/*设置表格高度*/
$objActSheet->getRowDimension( $column)->setRowHeight(180);
foreach ($value['image'] as $n => $img) {
$img = "http:{$img}";
// $img = "http://image.xidibuy.com/image/image.ba57b3db04a9456b082a02bbf938fc8e3d9fae2ec039f7613500842dd515aa3d.jpeg/720x1280/180";
$temp_pic = self::download($img, UPLOAD_PATH . '/tmp/');
$local_pic_path = './upload/tmp/' . $temp_pic;
if (file_exists($local_pic_path)) {
// 图片字段
$objDrawing = new PHPExcel_Worksheet_Drawing();
/*设置图片路径*/
$objDrawing->setPath($local_pic_path);
/*设置图片宽度*/
$objDrawing->setWidth(180);//写入图片宽度
/*设置图片高度*/
$objDrawing->setHeight(180);
// $objDrawing->getShadow()->setVisible(true);
// $objDrawing->getShadow()->setDirection(50);
/*设置图片所在单元格的格式*/
$objDrawing->setOffsetX($n*200);
/*设置图片要插入的单元格*/
// echo $prefix . $j . $column;die();
$objDrawing->setCoordinates($prefix . $j . $column);
$objDrawing->setWorksheet($objActSheet);
} else {
// echo $local_pic_path;
// die('文件不存在');
$objActSheet->setCellValueExplicit($prefix . $j . $column, '无图片');
}
}
} else {
$objActSheet->setCellValueExplicit($prefix . $j . $column, $value);
}
if ($j == 'Z') {
$span = ord("@");
$prefix = chr($fixkey);
$fixkey++;
}
$span++;
}
$column++;
}
//设置活动单指数到第一个表,所以Excel打开这是第一个表
$objPHPExcel->setActiveSheetIndex(0);
if ($m_exportType == "Excel2007") {
//将输出重定向到一个客户端web浏览器(Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; filename=\"$fileName\"");
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output'); //文件通过浏览器下载
} elseif ($m_exportType == "Excel5") {
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=\"$fileName\"");
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
}
} else {
return FALSE;
}
}
public static function download($url,$path='images/')
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//信任任何证书
$file = curl_exec($ch);
curl_close($ch);
$url = preg_replace('/\/\d+x\d+\/\d+/', '', $url);
$filename = pathinfo($url,PATHINFO_BASENAME);
$resource = fopen($path.$filename,'a');
fwrite($resource, $file);
fclose($resource);
return $filename;
}
网友评论