项目中经常会用到读取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表的操作。

相关评论(0)
您是不是忘了说点什么?

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!