首页 » PHP笔记 » 封装phpexcel读取excel与导出excel的方法

封装phpexcel读取excel与导出excel的方法

高蒙 2016/12/14 11:27 2.6k浏览 0评论 PHP


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




相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    487

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。