项目中经常会用到读取excel与导出excel的功能,每次需要使用的时候都是写了一大串的代码,刚好现在有点空闲就整理出读取和导出excel的两种方法。
在之前的几篇文章我也介绍了,怎么单独的使用phpexcel
类库实现读取excel和导出excel的使用方法。今天是将两个方法进行封装,为了更好的满足业务的需求。
这里封装的方法,可以满足基本的业务需求。有更多的需求,也可以继续的自行扩展。
准备:将phpexcel类库已下载,放置对应的位置。
一、导出excel方法(export_excel)
/* 导出excel方法 支持单表 * @param $title 表名 * @param $header 设置表头 * @param $field 设置字段 一维数组 * @param $data 数据列表 数组内数据对应字段值 * @param string $ext 默认的后缀名 * @param string $dir 保存的路径 * @return string 返回文件名 * @author gm * @time 2016/12/14 * * 使用实例 * $title = '测试表格'; $header = array('姓名','性别'); $field = array('name','sex'); $data = array( array('name'=>'小明','sex'=>'男'), array('name'=>'晓兰','sex'=>'女'), array('name'=>'小黑','sex'=>'男'), array('name'=>'小店','sex'=>'女'), ); $dir = './excel/'; $filename = export_excel($title,$header,$field,$data,$dir); echo $filename; * */ function export_excel($title,$header,$field,$data,$dir,$ext='.xls'){ header("Content-type:text/html;charset=utf-8"); require_once './phpexcel/PHPExcel.php'; // 引入phpexcel $phpexcel = new \PHPExcel(); // 设置表头 $chr = 65; foreach($header as $k=>$v){ $phpexcel->setActiveSheetIndex(0)->setCellValue(chr($chr).'1', $v); $chr++; } // 标签名 $phpexcel->getActiveSheet()->setTitle($title); // 使用第一个表 $phpexcel->setActiveSheetIndex(0); $objWriter = new \PHPExcel_Writer_Excel5($phpexcel); foreach ($data as $key => $value) { //表格是从2开始的 因为上面还有表头 $i = $key + 2; $chr = 65; foreach($field as $v){ $phpexcel->getActiveSheet()->setCellValue(chr($chr) . $i, $value[$v]);//这里是设置单元格的内容 $chr++; } } if (!is_dir($dir)) { mkdir($dir, 0777, TRUE); } $filename = $dir . time() . rand(10000, 99999) . $ext; $objWriter->save($filename); return $filename; }
二、读取excel方法(read_excel)
/* 读取excel 返回数组 * @param $filename 文件名 * @return array */ function read_excel($filename){ header("Content-type:text/html;charset=utf-8"); require_once './phpexcel/PHPExcel.php'; $PHPExcel = \PHPExcel_IOFactory::load($filename); $currentSheet = $PHPExcel->getSheet(0); //第一个sheet $col = $currentSheet->getHighestColumn(); //取得总列数 $row = $currentSheet->getHighestRow(); //取得总行数 $arr = array(); for ($currentRow = 1; $currentRow <= $row; $currentRow++) { for ($currentColumn = 'A'; $currentColumn <= $col; $currentColumn++) { $arr[$currentRow][] .= $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65, $currentRow)->getValue(); } } return $arr; }
上面整理的php使用phpexcel
类库导出excel方法(export_excel
)和读取excel方法(read_excel
)很轻松的实现php对excel表的操作。
友情提示:垃圾评论一律封号...