tp8读取mysql导出excel

环境:php8.3, thinkphp8.0, mysql8.0

php 复制代码
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use think\facade\Db;
use think\response\Json;

class Index
{
    public function index(): Json
    {
        // 查询 MySQL 数据表数据
        $employees = Db::name('employee')
            ->field('emp_name, emp_sex, emp_phone, create_time')
            ->select()
            ->toArray();

        // 创建 PhpSpreadsheet 对象
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();

        // 设置表头
        $sheet->setCellValue('A1', '姓名');
        $sheet->setCellValue('B1', '性别');
        $sheet->setCellValue('C1', '电话');
        $sheet->setCellValue('D1', '日期');

        // 设置表头样式:居中对齐和加粗
        $headerStyle = [
            'font' => [
                'bold' => true,  // 加粗
                'size' => 12,    // 字体大小
            ],
            'alignment' => [
                'horizontal' => Alignment::HORIZONTAL_CENTER,  // 水平居中
                'vertical' => Alignment::VERTICAL_CENTER,      // 垂直居中
            ]
        ];

        // 应用样式到表头
        $sheet->getStyle('A1:D1')->applyFromArray($headerStyle);

        // 填充数据
        $rowNum = 2;  // 从第二行开始填充数据
        foreach ($employees as $employee) {
            $sheet->setCellValue('A' . $rowNum, $employee['emp_name']);
            $sheet->setCellValue('B' . $rowNum, $employee['emp_sex']);
            $sheet->setCellValue('C' . $rowNum, $employee['emp_phone']);
            $sheet->setCellValue('D' . $rowNum, $employee['create_time']);
            $rowNum++;
        }

        /*$writer = new Xlsx($spreadsheet);
        $writer->save('demo.xlsx');*/
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="myfile.xlsx"');
        header('Cache-Control: max-age=0');

        $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
        $writer->save('php://output');
        return json(['code'=>200,'msg'=>'success']);
    }
}
bash 复制代码
composer require phpoffice/phpspreadsheet

根据phpspreadsheet官方文档,写了上述代码,如有不懂的地方,请查阅官方文档。

相关推荐
Digitally3 分钟前
4种方法在电脑上查看安卓短信
android·电脑
_李小白3 分钟前
【Android FrameWork】第四十天:SamplingProfilerService
android
走在路上的菜鸟6 分钟前
Android学Dart学习笔记第二十四节 类-可调用对象Class()()
android·笔记·学习·flutter
2501_915921439 分钟前
Flutter App 到底该怎么测试?如何在 iOS 上进行测试
android·flutter·ios·小程序·uni-app·cocoa·iphone
CodeCraft Studio14 分钟前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建气泡图
信息可视化·c#·excel·aspose·excel api库·excel气泡图·excel组件库
·云扬·15 分钟前
MySQL服务器性能优化:硬件与存储配置全指南
服务器·mysql·性能优化
常利兵18 分钟前
Kotlin Flow 从入门到实战:异步数据流处理的终极解决方案
android·kotlin
CodeCraft Studio19 分钟前
国产化Excel开发组件Spire.XLS教程:使用Python批量删除Excel分页符
开发语言·python·excel·python开发·spire.xls·excel api库·excel开发组件
二流小码农21 分钟前
鸿蒙开发:一个底部的曲线导航
android·ios·harmonyos
Kapaseker27 分钟前
数据传参明妙理 临危受命逢转机
android·kotlin