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