PHPExcel一些相关操作,只罗列了部分功能,后续有新增再补充。代码可直接复制使用,需要注意是引入PHPExcel类库时因为是thinkphp框架,所以使用了import导入,如果其他框架,需要做部分调整。
1.引用PHPExcel类库,支持xls、xlsx格式导入
// 注意:以下是使用thinkphp框架引入的PHPExcel// 导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入import("Org.Util.PHPExcel");// 上传的Excel文件// 要导入的xls文件,位于根目录下的Public文件夹$filename=$_FILES["excel"]["tmp_name"];// 创建PHPExcel对象,注意,不能少了\$PHPExcel = new \PHPExcel();$extension = strtolower(pathinfo($_FILES["excel"]['name'], PATHINFO_EXTENSION));if ($extension =='xlsx') {//如果excel文件后缀名为.xlsx,导入这下类import("Org.Util.PHPExcel.Reader.Excel");$PHPReader = new \PHPExcel_Reader_Excel();$PHPExcel=$PHPReader->load($filename);} else if ($extension =='xls') {//如果excel文件后缀名为.xls,导入这个类import("Org.Util.PHPExcel.Reader.Excel5");$PHPReader=new \PHPExcel_Reader_Excel5();//载入文件$PHPExcel=$PHPReader->load($filename);}
2.单元格内换行
// 设置D3单元格内容,添加\n标识换行,如果要换行需要使用双引号,否则\n无效$PHPExcel->getActiveSheet()->setCellValue('D3', "必填\nyyyymmdd");// 设置单元格D3 换行$PHPExcel->getActiveSheet()->getStyle('D3')->getAlignment()->setWrapText(True);
3.设置单元格值(避免显示科学计数法)
$PHPExcel->getActiveSheet()->setCellValue('A1', '必填');// \PHPExcel_Cell_DataType::TYPE_STRING 设置单元格类型为文本类型,避免数值太大显示科学计数法$PHPExcel->getActiveSheet()->setCellValueExplicit('B1', '123123123123', \PHPExcel_Cell_DataType::TYPE_STRING);
4.设置单元格字体样式(加粗、字号、字体、颜色)
// 设置字体为Arial$PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Arial');// 设置A1到D1单元格,加粗$PHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);// 设置字号$PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);// 设置字体为红色$phpColor = new PHPExcel_Style_Color();$phpColor->setRGB('FF0000');$PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setColor($phpColor);
5.设置对齐方式
// 水平居中$PHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);// 垂直居中$PHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);// 左对齐:PHPExcel_Style_Alignment::HORIZONTAL_LEFT// 右对齐:PHPExcel_Style_Alignment::HORIZONTAL_RIGHT
6.合并单元格
// 合并A1到D1单元格$PHPExcel->getActiveSheet()->mergeCells('A1:D1');
7.设置文档信息
$PHPExcel->getProperties()->setCreator('test')->setLastModifiedBy('test')->setTitle('test Title')->setSubject('TEST')->setDescription('')->setKeywords('keyword')->setCategory('');
8.设置某列宽度
// 设置A列$PHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
9.设置某行高度
// 设置第一行$PHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(20);
10.excel输出
$objWriter = new \PHPExcel_Writer_Excel5($PHPExcel);header('Pragma: public');header('Expires: 0');header('Cache-Control:must-revalidate, post-check=0, pre-check=0');header('Content-Type:application/force-download');header('Content-Type:application/vnd.ms-execl');header('Content-Type:application/octet-stream');header('Content-Type:application/download');$fileName='test.xls';$encoded_filename = urlencode($fileName);$ua = $_SERVER['HTTP_USER_AGENT'];if (preg_match('/MSIE/', $ua)) {header('Content-Disposition: attachment; filename="' . $encoded_filename . '.xls"');}else if (preg_match('/Firefox/', $ua)) {header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '.xls"');}else {header('Content-Disposition: attachment; filename="' . $fileName . '.xls"');}header('Content-Transfer-Encoding:binary');$objWriter->save('php://output');
因为项目开发过程中整理,以上代码如有问题欢迎大家指出,我再进行修改~~