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.Excel2007"); $PHPReader = new \PHPExcel_Reader_Excel2007(); $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->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');
因为项目开发过程中整理,以上代码如有问题欢迎大家指出,我再进行修改~~