導(dǎo)出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);
//創(chuàng)建新的PHPExcel對象
$objPHPExcel = new PHPExcel();
$objProps = $objPHPExcel->getProperties();
//
//設(shè)置表頭
$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); // 設(shè)置單元格換行(不是自動換行 內(nèi)容中有\(zhòng)n才會換行)
$objPHPExcel->getActiveSheet()->getColumnDimension($prefix . $colum)->setAutoSize(true); // 設(shè)置單元格自動調(diào)整寬度
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 = '';
/*設(shè)置表格寬度*/
$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'])) {
/*設(shè)置表格高度*/
$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();
/*設(shè)置圖片路徑*/
$objDrawing->setPath($local_pic_path);
/*設(shè)置圖片寬度*/
$objDrawing->setWidth(180);//寫入圖片寬度
/*設(shè)置圖片高度*/
$objDrawing->setHeight(180);
// $objDrawing->getShadow()->setVisible(true);
// $objDrawing->getShadow()->setDirection(50);
/*設(shè)置圖片所在單元格的格式*/
$objDrawing->setOffsetX($n*200);
/*設(shè)置圖片要插入的單元格*/
// 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++;
}
//設(shè)置活動單指數(shù)到第一個表,所以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;
}