<?php
namespace app\admin\controller;
use think\Model;
use PHPExcel_IOFactory;
use PHPExcel;
require "../vendor/phpoffice/phpexcel/Classes/PHPExcel.php";
class ExportExcel extends Common
{
public function exportExcel($expTitle,$expCellName,$expTableData){
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//檔案名稱
$fileName = $expTitle.date('_YmdHis');//or $xlsTitle 檔案名稱可根據自己情況設定
$cellNum = count($expCellName);
$dataNum = count($expTableData);
if($dataNum==0) $dataNum=500; //模闆下載下傳自動填充行
$objPHPExcel = new PHPExcel();
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
// $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并單元格
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'1', $expCellName[$i][1]);
if($expTitle=='訂單'){
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(30);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(30);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(30);//列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(30);//列寬
}
}
// Miscellaneous glyphs, UTF-8
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
//設定表格的高度自适應
$objPHPExcel->getActiveSheet()->getStyle($cellName[$j].($i+2))->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+2), $expTableData[$i][$expCellName[$j][0]]);
}
}
ob_end_clean();//清除緩沖區,避免亂碼
header('Content-Type: application/vnd.ms-excel');
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新視窗列印inline本視窗列印
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
}
調用的時候用:
//$xlsName 表名稱 xlsCell 表列 list 表中的資料
$xlsName = "訂單";
$xlsCell = array(
array('id','訂單編号'),
array('order_id','訂單id'),
array('user_name','預訂人姓名'),
array('user_phone','預訂人電話'),
array('out_order_id','第三方交易号'),
array('pay_status','支付狀态'),
array('status','訂單狀态'),
array('pay_time','支付時間'),
array('all_price','總價格'),
);
$model=new ExportExcel;
$result=$model->exportExcel($xlsName,$xlsCell,$list);
希望對大家有幫助
其他的一些方法:
$objPHPExcel = new PHPExcel();
// 設定檔案屬性
$objPHPExcel->getProperties()->setCreator("C1G")
->setLastModifiedBy("C1G")
->setTitle("phpexcel Test Document")
->setSubject("phpexcel Test Document")
->setDescription("Test document for phpexcel, generated using PHP classes.")
->setKeywords("office 2007 openxml php c1gstudio")
->setCategory("Test");
//設定預設行高
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(15);
//設定列寬
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth('20');
// 加粗
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
// 設定單元格格式
$objPHPExcel->getActiveSheet()->getCell('C2')->setValueExplicit('861391327543258', PHPExcel_Cell_DataType::TYPE_NUMERIC);
// 日期
$objPHPExcel->getActiveSheet()->setCellValue('G2', '2008-12-31');
$objPHPExcel->getActiveSheet()->getStyle('G2')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
// 時間戳
$time = gmmktime(0,0,0,12,31,2008); // int(1230681600)
$objPHPExcel->getActiveSheet()->setCellValue('G3', PHPExcel_Shared_Date::PHPToExcel($time));
$objPHPExcel->getActiveSheet()->getStyle('G3')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
// url
$objPHPExcel->getActiveSheet()->setCellValue('G11', 'blog.c1gstudio.com');
$objPHPExcel->getActiveSheet()->getCell('G11')->getHyperlink()->setUrl('http://blog.c1gstudio.com');
// 另一個sheet
$objPHPExcel->getActiveSheet()->setCellValue('G12', 'sheetb');
$objPHPExcel->getActiveSheet()->getCell('G12')->getHyperlink()->setUrl("sheet://'sheetb'!A1");
// 水準居上
$objPHPExcel->getActiveSheet()->getStyle('A9:B9')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);
// 單元格換行
$objPHPExcel->getActiveSheet()->getStyle('G2:G3')->getAlignment()->setWrapText(true);
// 合并
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
// 隐藏D列
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setVisible(false);
//
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setOutlineLevel(1);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setVisible(false);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setOutlineLevel(1);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setVisible(false);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setCollapsed(true);
// 固定第一行
$objPHPExcel->getActiveSheet()->freezePane('A2');
// 保護工作表
$objPHPExcel->getActiveSheet()->getProtection()->setPassword('PHPExcel');
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
$objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
$objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
$objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
//設定邊框
$sharedStyle1 = new PHPExcel_Style();
$sharedStyle1->applyFromArray(
array('borders' => array(
'left' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM)
)
));
$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "B1:B10");
// 建立一個新的工作表
$objWorksheet1 = $objPHPExcel->createSheet();
$objWorksheet1->setTitle('sheetb');
$objPHPExcel->setActiveSheetIndex(1);
// 建立一個圖檔
$gdImage = @imagecreatetruecolor(200, 20) or die('Cannot Initialize new GD image stream');
$textColor = imagecolorallocate($gdImage, 255, 255, 255);
imagestring($gdImage, 1, 5, 5, 'Created with PHPExcel (c1gstudio.com)', $textColor);
// 把建立的圖檔添加到工作表
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setName('Sample image');
$objDrawing->setDescription('Sample image');
$objDrawing->setImageResource($gdImage);
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(36);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objPHPExcel->setActiveSheetIndex(0);
// 儲存
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('testexcel'.time().'.xls');
原文位址:https://blog.csdn.net/lampsunny/article/details/79012173