tp6下载Excel 循环插入数据

本文介绍了如何使用PHP和相关库(如Spreadsheet和IOFactory)动态生成Excel表格,包括设置单元格内容、格式化标题和边框,以及根据数据库数据填充表格并导出为Excel文件,用于活动集体报名模板的创建。
摘要由CSDN通过智能技术生成
 //  数据总列数
        $allColumns = count($formsTable);
        //  数据总行数
        $allRows = $model->where(['status' => 1, 'ac_id' => $ac_id])->count();
        // 实例化
        $spreadsheet = new Spreadsheet();
        // 获取活动单元格
        $sheet = $spreadsheet->getActiveSheet();
        //设置单元格内容
        foreach ($formsTable as $key => $value) {
            // 单元格内容写入
            $sheet->setCellValueByColumnAndRow($key + 1, 1, $value['title']);
        }
        //  如有数据,添加数据
        $row = 2; //从第二行开始
        for ($i = 0; $i < $allRows; $i++) {
            for ($j = 1; $j <= $allColumns; $j++) {
                $sheet->setCellValueByColumnAndRow($j, $row, $formsTable[$j - 1]['value']);
            }
            $row++;
        }
        $getHighestRowAndColumn = $sheet->getHighestRowAndColumn();
        $HighestRow = $getHighestRowAndColumn['row'];   //最大行数
        $column = $getHighestRowAndColumn['column'];    //最大列数
        //  填充背景颜色 -- 第一行
        $titleScope = 'A1:' . $column . '1';    //第一(标题)范围(例:A1:D1)
        $sheet->getStyle($titleScope)
            ->getFill()
            ->setFillType(Fill::FILL_SOLID) // 设置填充样式
            ->getStartColor()
            ->setARGB('00B0F0');
        // 设置文字颜色为白色
        $sheet->getStyle($titleScope)->getFont()->getColor()
            ->setARGB('FFFFFF');
        $spreadsheet->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
        //  添加表格/边框线
        $allCope = 'A1:' . $column . $HighestRow;//整个表格范围(例:A1:D5)
        $sheet->getStyle($allCope)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN);
        $acTitle = Activity::where('id', $ac_id)->value('title');
        // 下载文件名称
        $file_name = $acTitle . '_集体报名模板.xlsx';
        // 实例化导出类
        header('Content-Type:application/vnd.ms-excel');
        header('Content-Disposition:attachment;filename=' . $file_name);
        header('Cache-Control:max-age=0');
        //  输出文件
        $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
        $writer->save('php://output');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值