PhpSpreadsheet带时间筛选的封装

PhpSpreadsheet带时间筛选的封装

// 时间过滤
public function time($table)
    {

        // 如果按照时间筛选,获取开始时间和结束时间
        $start = strtotime(input('param.outstart'));
        $end = strtotime(input('param.outend'));

        if(empty($start) || empty($end)){
            $data = Db::table($table)->order('id desc')->select();
        }else{
            $data = Db::table($table)->whereTime('create_time', 'between', [$start, $end])->order('id desc')->select();
        }
        return $data;
    }
// 封装函数
    public function outdata($name='测试表', $data=[], $head=[], $keys=[])
    {

        $count = count($head);
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();

        // chr()将数字转换成字母,从65开始以后是A,B,C,D...
        for ($i = 65; $i < $count + 65; $i++) {
            $sheet->setCellValue(strtoupper(chr($i)) . '1', $head[$i - 65]);
        }

        // 循环遍历进表格
        foreach ($data as $key => $item) {
            for ($i = 65; $i < $count + 65; $i++) {
                $sheet->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys[$i - 65]]);
                $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20);
            }
        }

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $name . '.xlsx"');
        header('Cache-Control: max-age=0');
        $writer = new Xlsx($spreadsheet);
        $writer->save('php://output');
        $spreadsheet->disconnectWorksheets();

        // 删除缓存
        unset($spreadsheet);
        exit;
    }
// 示例
public function tmp()
    {
        $table = 'tmp';
        $name = '测试';
        $data = $this->time($table);
        $head = ['班级编号', '总人数', '班主任', '联系电话', '班级地址'];
        $keys = ['class_sn', 'num', 'class_boss', 'phone', 'class_adress'];
        $result = $this->outdata($name, $data, $head, $keys);
        return $result;
    }

你可能感兴趣的:(PHP工具类)