码迷,mamicode.com
首页 > Web开发 > 详细

php excel的使用

时间:2020-07-24 16:51:05      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:validate   int   文件名   param   val   author   static   属性   var_dump   

1. 引入类

use PHPExcel;
use PHPExcel_IOFactory;
use PHPExcel_Reader_Excel5;
use PHPExcel_Reader_Excel2007;
use PHPExcel_RichText;
2导入
/**
     * PHPexcel导入
     */
    public function getexcel($filename,$exts="xls")
    {
        //  = ‘./uploads/a.xls‘;
        //  = ‘xls‘;
        //如果excel文件后缀名为.xls,导入这个类
        if ($exts == ‘xls‘) {
            $PHPReader = new PHPExcel_Reader_Excel5();
        } else if ($exts == ‘xlsx‘) {
            $PHPReader = new PHPExcel_Reader_Excel2007();
        }
        //定义个数组接收数据
        $dr_data = array();
        //载入文件
        $PHPExcel = $PHPReader->load($filename);
        //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
        $currentSheet = $PHPExcel->getSheet(0);
        //获取总列数
        $allColumn = $currentSheet->getHighestColumn();
        //获取总行数
        $allRow = $currentSheet->getHighestRow();
        //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
        for ($currentRow = 1; $currentRow <= $allRow; $currentRow++) {
            //从哪列开始,A表示第一列
            for ($currentColumn = ‘A‘; $currentColumn <= $allColumn; $currentColumn++) {
                //数据坐标
                $address = $currentColumn . $currentRow;// A1
                //读取到的数据,保存到数组$arr中
                $cell = $currentSheet->getCell($address)->getValue();

                // instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例
                if ($cell instanceof PHPExcel_RichText) {
                    $cell = $cell->__toString();
                }
                //print_r($cell);
                $dr_data[$currentRow][$currentColumn] = $cell; //数据赋值
            }
        }
        return $dr_data;
    }

}
3.导出
class Excel extends Controller
{
    public function index()
    {
        $fileName = ‘名册‘;
        $headArr = [‘姓名‘,‘性别‘,‘年龄‘];
        $data = db(‘mingce‘)->field(‘names,sex,nian‘)->select();

        $this->excelExport($fileName,$headArr,$data);
    }
    public function aa(){
        if(request()->isPost()){
            $file = request()->file(‘file‘);
            $info = $file->validate([‘size‘=>1567800,‘ext‘=>‘xls‘])->move(ROOT_PATH . ‘public‘ . DS . ‘uploads‘);
            $filse = ‘./uploads/‘.$info->getSaveName();
            // echo $filse;
            $res = $this->getexcel($filse);
            $arr = [];
            foreach($res as $key=>$val){
                $arr[$key][‘names‘] = $val[‘A‘];
                $arr[$key][‘sex‘] = $val[‘B‘];
                $arr[$key][‘nian‘] = $val[‘C‘];
            }
            // var_dump($arr);
            db(‘mingce‘)->insertAll($arr);
        }
        return $this->fetch();
    }
    /**
     * excel表格导出
     * @param string $fileName 文件名称
     * @param array $headArr 表头名称
     * @param array $data 要导出的数据
     * @author static7
     * */

    public function excelExport($fileName,$headArr,$data)
    {
        // // 导出文件名称
        //  = ‘a‘;
        // // 数据表头
        // $headArr = [‘姓名‘, ‘性别‘,‘年龄‘];
        // // 具体数据
        // $data = [
        //     [‘张三‘, ‘男‘,‘11‘],
        //     [‘李四‘, ‘女‘,‘12‘]
        // ];

        $fileName .= "_" . date("Y_m_d", time()) . ".xls";
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties(); // 设置Excel的属性;

        // 设置表头
        $key = ord("A");//65
        foreach ($headArr as $v) {
            $colum = chr($key);//‘A‘
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . ‘1‘, $v);
            // $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . ‘1‘, $v);
            $key += 1;
        }
        // 设置表头end

        // 循环显示数据
        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();
        foreach ($data as $key => $rows) { // 行写入
            $span = ord("A");
            foreach ($rows as $keyName => $value) { // 列写入
                $objActSheet->setCellValue(chr($span) . $column, $value);
                $span++;
            }
            $column++;
        }
        // 循环显示数据end

        $fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表
        $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
        ob_end_clean(); // 清空(擦除)缓冲区并关闭输出缓冲
        ob_start(); // 打开输出控制缓冲

        header(‘Content-Type: application/vnd.ms-excel‘);
        header("Content-Disposition: attachment;filename=$fileName");
        header(‘Cache-Control: max-age=0‘);
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘);

        $objWriter->save(‘php://output‘); // 文件通过浏览器下载
        exit();
    }

php excel的使用

标签:validate   int   文件名   param   val   author   static   属性   var_dump   

原文地址:https://www.cnblogs.com/vermouthmo/p/13371517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!