吾生也有涯,而知也无涯~欢迎优化补充、指正!
(直接复制demo即可使用,或者单独粘贴相应片段!)
*本文是在tp5下进行编译与调试的,其他框架原理相同、请自行调整。
*本文包括PHPExcel上传与下载,具体在demo中体现
首先下载PHPExcel源文件(本例采用github下载)
1.访问https://github.com/PHPOffice/PHPExcel 下载压缩包
2.解压后将PHPExcel 文件保存到extend下
3.此时就可以开始使用了
由于PHPExcel不像tp框架的其他文件那样设置有命名空间,此处采用Loader::import引入文件
Loader::import('PHPExcel.Classes.PHPExcel');
Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
接下来不再冗述直接上demo 方便大家使用(抛转引玉,大家魔改就好)
getActiveSheet();
$PHPSheet->setTitle("demo");
$PHPSheet->setCellValue("A1","创建时间")
->setCellValue("B1","订单编号")
->setCellValue("C1","收件人")
->setCellValue("D1","电话")
->setCellValue("E1","地址");
$PHPSheet->setCellValue("B2","选填,方便查询")
->setCellValue("C2","必填")
->setCellValue("D2","必填")
->setCellValue("E2","河南省 郑州市 二七区 商阜新村三号楼 1单元 301户 示例必填");
$PHPSheet->getColumnDimension('B')->setWidth('20'); //设置相应的列宽
$PHPSheet->getColumnDimension('D')->setWidth('20');
$PHPSheet->getColumnDimension('E')->setWidth('60');
$this->cellColor($PHPSheet,'A1:E1','FF9900');//设置背景颜色
$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,"Excel2007");
header('Content-Disposition: attachment;filename="收件人模板.xlsx"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$PHPWriter->save("php://output");
}
//改变颜色
public function cellColor($PHPSheet,$cells,$color){
$PHPSheet->getStyle($cells)->getFill()->applyFromArray(array(
'type' => \PHPExcel_Style_Fill::FILL_SOLID,
'startcolor' => array(
'rgb' => $color
)
));
}
//导入excel
public function intoExcel()
{
Loader::import('PHPExcel.Classes.PHPExcel');
Loader::import('PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory');
$file = request()->file('excel');
$info = $file->validate(['ext'=>'xlsx,xls,csv'])->move(ROOT_PATH . 'public' . DS . 'uploads');
if ($info) {
$exclePath = $info->getSaveName();
$file_name = ROOT_PATH . 'public' . DS . 'uploads' . DS . $exclePath;
//根据excel文件不同后缀选择不同提交方式
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if ($extension =='xlsx') {
$objReader = \PHPExcel_IOFactory::createReader('Excel2007');
$obj_PHPExcel = $objReader ->load($file_name, $encode = 'utf-8');
} else if ($extension =='xls') {
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
$obj_PHPExcel = $objReader ->load($file_name, $encode = 'utf-8');
} else if ($extension=='csv') {
$objReader = \PHPExcel_IOFactory::createReader('CSV');
//默认输入字符集
$objReader->setInputEncoding('GBK');
//默认的分隔符
$objReader->setDelimiter(',');
//载入文件
$obj_PHPExcel = $objReader->load($file_name);
}
$excel_array=$obj_PHPExcel->getsheet(0)->toArray();
return $excel_array;
} else {
return $file->getError();
}
}
}
*$PHPSheet->setCellValue()用来填充相应位置的内容。
例子所示数据有限,当然你可以循环输出多量数据或者通过formArray()从数组获取并填充到表格
$PHPSheet->formArray($array,null,'A1');
$array:数据来源数组
A1:起始填充位置
例:
$array = [
'0'=>['01','02','03'],
'1'=>['11','12'],
'2'=>['21']
];
如上$array,输出后excel表格如下:
PHPExcel的基本用法就介绍到这里,如果有什么疑惑可以联系本人!