tp6导出Excel表格

10 篇文章 0 订阅

1. 说明:tp6导入数据,使用phpoffice/phpspreadsheet ,至于详细使用方法请看上一篇tp6导入Excel表格

2.具体方法内容如下,如果是tp6应该是可以直接复制粘贴,只把自己相应的参数改一下就可以了,具体代码如下

public function exportExcel()
    {
        // 查询要导出的数据
        $model = new ErrorModel();
        $data = $model
            ->field('id,api_member_id,title,Chinese,English,example,translate,desc')
            ->select();
        // 实例化
        $spreadsheet = new Spreadsheet();
        // 获取活动单元格
        $sheet = $spreadsheet->getActiveSheet();

        // 获取单元格
        $cellA = $sheet->getCell('A1');
        // 设置单元格的值
        $cellA->setValue('ID');
        // 设置 A 列 列宽
        $sheet->getColumnDimension('A')->setWidth(10);
        // 设置第一行 行高
        $sheet->getRowDimension(1)->setRowHeight(20);

        $cellB = $sheet->getCell('B1');
        $cellB->setValue('记录人');
        $sheet->getColumnDimension('B')->setWidth(20);

        $cellC = $sheet->getCell('C1');
        $cellC->setValue('题目名称');
        $sheet->getColumnDimension('C')->setWidth(10);

        $cellD = $sheet->getCell('D1');
        $cellD->setValue('中文');
        $sheet->getColumnDimension('D')->setWidth(20);

        $cellE = $sheet->getCell('E1');
        $cellE->setValue('英文');
        $sheet->getColumnDimension('E')->setWidth(40);

        $cellE = $sheet->getCell('F1');
        $cellE->setValue('其他');
        $sheet->getColumnDimension('F')->setWidth(40);

        $cellF = $sheet->getCell('G1');
        $cellF->setValue('例句');
        $sheet->getColumnDimension('G')->setWidth(30);

        $cellG = $sheet->getCell('H1');
        $cellG->setValue('例句翻译');
        $sheet->getColumnDimension('H')->setWidth(30);

        $cellH = $sheet->getCell('I1');
        $cellH->setValue('注释');
        $sheet->getColumnDimension('I')->setWidth(30);


        // 设置样式 标题
        $styleArray = [
            'alignment' => [
                'horizontal' => 'center', //水平居中
                'vertical' => 'center', //垂直居中
            ],
            'font' => [
                'name' => '黑体',
                'bold' => false,
                'size' => 10
            ]
        ];
        // 设置样式 正文
        $styleArrayBody = [
            'alignment' => [
                'horizontal' => 'center', //水平居中
                'vertical' => 'center', //垂直居中
            ],
            'font' => [
                'name' => '宋体',
                'bold' => false,
                'size' => 10
            ]
        ];
        // 应用样式
        $sheet->getStyle('A1')->applyFromArray($styleArray);
        $sheet->getStyle('B1')->applyFromArray($styleArray);
        $sheet->getStyle('C1')->applyFromArray($styleArray);
        $sheet->getStyle('D1')->applyFromArray($styleArray);
        $sheet->getStyle('E1')->applyFromArray($styleArray);
        $sheet->getStyle('F1')->applyFromArray($styleArray);
        $sheet->getStyle('G1')->applyFromArray($styleArray);
        $sheet->getStyle('H1')->applyFromArray($styleArray);
        $sheet->getStyle('I1')->applyFromArray($styleArray);

        // 从 A2 开始填充数据
        foreach ($data as $k => $v) {
            $n = $k + 2;
            // 获取单元格
            $cellA = $sheet->getCell('A' . $n);
            // 设置单元格的值
            $cellA->setValue($v['id']);

            $cellB = $sheet->getCell('B' . $n);
            $cellB->setValue('api_member_id');

            $cellC = $sheet->getCell('C' . $n);
            $cellC->setValue($v['title']);

            $cellD = $sheet->getCell('D' . $n);
            $cellD->setValue($v['Chinese']);

            $cellD = $sheet->getCell('E' . $n);
            $cellD->setValue($v['English']);

            $cellD = $sheet->getCell('F' . $n);
            $cellD->setValue($v['else']);

            $cellE = $sheet->getCell('G' . $n);
            $cellE->setValue($v['example']);

            $cellF = $sheet->getCell('H' . $n);
            $cellF->setValue($v['else']);

            $cellG = $sheet->getCell('I' . $n);
            $cellG->setValue($v['desc']);
        }

        $file_name = '导出数据.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');
    }

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
TP6,即ThinkPHP6,是一个基于Go语言的高性能、开放源码的Web应用框架,旨在简化PHP开发者构建Web应用程序的过程。在这个框架中导出Excel文件通常涉及到将数据集转换成Excel格式并下载到用户的浏览器。 以下是使用ThinkPHP6导出Excel的基本步骤: ### 1. 安装依赖库 为了生成Excel文件,你需要引入一些额外的PHP库,例如 PhpOffice\Writer\Xlsx 或者使用开源库如spatie/laravel-excel。 首先,确保在您的项目中安装了这些库。如果是使用composer管理包的话,则可以运行: ```bash composer require phpoffice/phpspreadsheet ``` 如果是在其他环境下需要导入laravel-excel则运行: ```bash composer require spatie/laravel-excel:^3.0 ``` ### 2. 创建Excel模板 接下来,创建一个新的Excel模板,定义所需的表格结构。这通常涉及创建一个新的工作表,并设置单元格样式等。 这里是一个简单的例子,使用phpspreadsheet: ```php use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; // 创建新的spreadsheet实例 $spreadsheet = new Spreadsheet(); // 添加新工作表 $worksheet = $spreadsheet->getActiveSheet(); $worksheet->setTitle('My Data'); // 设置列标题 $worksheet->setCellValue('A1', 'ID'); $worksheet->setCellValue('B1', 'Name'); $worksheet->setCellValue('C1', 'Email'); // 加入数据 $data = [ ['1', 'Alice', 'alice@example.com'], ['2', 'Bob', 'bob@example.com'], ]; // 写入数据 foreach ($data as $row => $rowData) { for ($col = 0; $col < count($rowData); $col++) { $worksheet->setCellValue(chr(65 + $col) . ($row + 2), $rowData[$col]); } } // 保存为xlsx文件 $writer = new Xlsx($spreadsheet); $writer->save(public_path() . '/my_data.xlsx'); ``` ### 3. 将Excel文件返回给用户 最后,在你的控制器中提供一个API端点用于返回这个Excel文件: ```php public function exportExcel() { return response()->download(public_path('my_data.xlsx'), 'my_data.xlsx'); } ``` 通过上述步骤,你可以实现在ThinkPHP6应用中导出并提供Excel文件的功能。请注意,根据实际需求,你可能还需要添加更多的错误处理以及安全性考量。例如,确保文件只从特定目录下载,并限制访问权限防止直接暴露敏感信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值