Fastadmin使用插件xlswriter导出数据

FastAdmin菜单规则树形结构分类显示 【代码】FastAdmin菜单规则树形结构分类显示。 阅读详情

一、列表页增加导出按钮

index.html:

<a href="javascript:;" class="btn btn-danger {$auth->check('client/export') ? '' : 'hide'}" id="excel_dc">{:__('导出')}</a>

对应JS文件的index方法中:

$('#excel_dc').click(function () {
    var url = 'client/export';
    window.open(url);
});

// 为表格绑定事件
Table.api.bindevent(table);

二、在 export() 查询并导出

use think\Db;
use Vtiful\Kernel\Excel;

public function export()
{
    // 查询数据
    $list = Db::table('fa_client')
        ->alias('c')
        ->join('admin a', 'a.id = c.admin_id')
        ->where('c.promotion_platform', '1')
        ->field('c.id, c.admin_id, c.account_id, c.account, c.accountname, c.authorization_id, c.adv_id, c.adv_name, c.mobile, c.promote_products, c.onlinetime, c.createtime, c.updatetime, c.promotion_platform, a.username as admin_username, a.nickname as admin_nickname')
        ->select();

    // Excel 表头
    $title = ['ID', '平台', '管理员ID', '管理员账号', '管理员昵称', '账户ID', '推广账号', '客户简称', '授权ID', '广告主ID', '广告主名称', '手机号', '推广产品', '上线时间', '创建时间', '更新时间'];

    // Excel 数据
    $data = [];

    foreach ($list as $row) {

        $data[] = [
            $row['id'],
            $row['promotion_platform'] == 1 ? 'JL' : '',
            $row['admin_id'],
            $row['admin_username'],
            $row['admin_nickname'],
            $row['account_id'],
            $row['account'],
            $row['accountname'],
            $row['authorization_id'],
            $row['adv_id'],
            $row['adv_name'],
            $row['mobile'],
            $row['promote_products'],
            $row['onlinetime'],
            date('Y-m-d H:i:s', $row['createtime']),
            date('Y-m-d H:i:s', $row['updatetime'])
        ];
    }

    // 文件名
    $filename = '客户数据';
    $filenames = $filename . '_' . date('Ymd_His') . '.xlsx';

    // 保存目录
    $paths = ROOT_PATH . 'public/export/';

    // 目录不存在则创建
    if (!is_dir($paths)) {
        mkdir($paths, 0755, true);
    }

    // XlsWriter 配置
    $config = [
        'path' => $paths
    ];

    // 创建 Excel
    $excel = new Excel($config);

    $excel->fileName($filename, '客户数据')
        ->header($title)
        ->data($data)
        ->output();

    // 下载地址
    $downloadUrl = '/export/' . $filename;

    echo '<a href="' . $downloadUrl . '" target="_blank">';
    echo '<h3>下载 ' . $filename . '</h3>';
    echo '</a>';

    exit;
}

三、如果数据比较多,应该使用游标/分批查询 + XlsWriter 分批写入

public function export()
{
    set_time_limit(0);

    // 导出目录
    $path = ROOT_PATH . 'public/export/';

    if (!is_dir($path)) {
        mkdir($path, 0755, true);
    }

    // 文件名
    $filename = '客户数据_' . date('Ymd_His') . '.xlsx';

    // XlsWriter
    $excel = new \Vtiful\Kernel\Excel([
        'path' => $path
    ]);

    // 表头
    $title = [
        'ID',
        '管理员ID',
        '账户ID',
        '账户',
        '账户名称',
        '授权ID',
        '广告ID',
        '广告名称',
        '手机号',
        '推广产品',
        '上线时间',
        '创建时间',
        '更新时间',
        '推广平台',
        '管理员账号',
        '管理员昵称',
    ];

    $excel->fileName($filename, '客户数据')
        ->header($title);

    // 每次查询 5000 条
    $pageSize = 5000;
    $lastId = 0;

    while (true) {

        $list = Db::table('rhtg_client')
            ->alias('c')
            ->join('admin a', 'a.id = c.admin_id', 'LEFT')
            ->where('c.promotion_platform', 1)
            ->where('c.id', '>', $lastId)
            ->field([
                'c.id',
                'c.admin_id',
                'c.account_id',
                'c.account',
                'c.accountname',
                'c.authorization_id',
                'c.adv_id',
                'c.adv_name',
                'c.mobile',
                'c.promote_products',
                'c.onlinetime',
                'c.createtime',
                'c.updatetime',
                'c.promotion_platform',
                'a.username' => 'admin_username',
                'a.nickname' => 'admin_nickname',
            ])
            ->order('c.id', 'ASC')
            ->limit($pageSize)
            ->select();

        if (empty($list)) {
            break;
        }

        $data = [];

        foreach ($list as $row) {

            $data[] = [
                $row['id'],
                $row['admin_id'],
                $row['account_id'],
                $row['account'],
                $row['accountname'],
                $row['authorization_id'],
                $row['adv_id'],
                $row['adv_name'],
                $row['mobile'],
                $row['promote_products'],
                $row['onlinetime'],
                date('Y-m-d H:i:s', $row['createtime']),
                date('Y-m-d H:i:s', $row['updatetime']),
                'JL',
                $row['admin_username'],
                $row['admin_nickname'],
            ];

            $lastId = $row['id'];
        }

        // 写入当前批次
        $excel->data($data);

        // 释放当前批次
        unset($list, $data);
    }

    // 输出文件
    $excel->output();

    // 下载地址
    $downloadUrl = '/uploads/client_export/' . $filename;

    echo '<a href="' . $downloadUrl . '" target="_blank">';
    echo '<h3>下载 ' . $filename . '</h3>';
    echo '</a>';

    exit;
}

ThinkPHP中Redis操作示例 【代码】ThinkPHP中Redis操作示例。 阅读详情

相关推荐

VLOOKUP_fixed.py

VLOOKUP_fixed.py

Fastadmin 选择下拉框

数据库 index.html model 控制器 JS add.html edit.html

withoutfear的博客 1万+

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

Fastadmin 表格操作项添加按钮并传参修改数据.(类似编辑按钮)

JS中添加如下代码 别忘记表格绑定事件 index.html 中需要的添加如下代码 控制器中添加对应方法 $params 打印的就是你html中的数据

withoutfear的博客 1万+

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

Fastadmin工具栏按钮自定义添加

1. index.html中添加自定义按钮 注意 : Class中红框标示内容 2. 对应JS中添加按钮对地址 3.require-table.js中添加对应代码 特别注意此处,红框标示内容必须修改一致 ...

withoutfear的博客 8452

【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)

内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。

Fastadmin的api跨域问题

在application\common\controller\Api.php //允许跨域 header('Access-Control-Allow-Origin:*');//允许跨域 if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS'){ // 浏览器页面ajax跨域请求会请求2次, // 第一次会发送OPTIONS预请求,不进行处理,直接exit返回, // 但因为下次发送真正的请求头部有带token, // 所以这里设置允许下

withoutfear的博客 4156

VLA、世界模型与端到端在智驾中的本质关系与工程落地

世界模型并非3D重建,而是对环境状态转移函数的可微分建模;VLA不是视觉+语言+动作的简单拼接,核心在于跨模态语义对齐。二者共同支撑具身智能系统实现从感知到行动的闭环推演,其技术价值体现在长尾场景泛化能力提升与决策延迟降低。在自动驾驶领域,真实量产方案均采用VLA架构作为多模态感知基础,嵌入轻量级世界模型以支持反事实轨迹推演,并通过WA硬件封装保障实时性,最终由端到端控制层完成像素到扭矩的语义贯通。这种混合架构已成L2+/L3智驾系统的工程共识。

weixin_34163553的博客 365

从涡流求解器到瞬态场:Maxwell 3D里无线充电仿真,选对求解器能省一半计算时间

本文深入探讨了Maxwell 3D在无线充电仿真中涡流求解器与瞬态求解器的选择策略,帮助工程师优化计算效率与精度。通过对比分析两种求解器的适用场景、性能差异及实战技巧,揭示如何根据频率特性、材料非线性和动态过程需求做出精准选择,可节省高达50%的计算时间。特别针对3D线圈模型的无线充电系统设计提供了专业建议。

weixin_26861329的博客 230

Fastadmin table 列表页图片预览处理

方法一: 把下面的代码插入 // 为表格绑定事件 Table.api.bindevent(table); 的上面即可 table.on('post-body.bs.table', function (e, settings, json, xhr) { $(".btn-editone", this) .off("click")...

withoutfear的博客 3618

scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释

本文介绍了使用scanpy进行单细胞转录组分析的降维聚类和细胞注释流程。首先通过PCA降维并可视化主成分贡献,然后使用不同分辨率参数(0.2-1.0)进行Leiden聚类。通过Wilcoxon检验鉴定marker基因,并基于经典marker基因手动注释细胞类型。最后对低质量细胞群进行过滤,并重新计算邻居图和UMAP可视化。流程中包含PCA方差分析、多分辨率聚类比较、marker基因筛选和基于UMAP的细胞类型可视化等关键步骤,为后续分析奠定基础。

qq_42090739的博客 941

Fastadmin操作栏按钮自定义添加及条件限制隐藏显示

根据某字段的值判断显示某个按钮 效果图 : 代码 : {field: 'operate', title: __('Operate'), table: table, buttons: [{ name: 'TDG', text: __('去发货'), extend:'data-area = \'["530px", "345px"]...

withoutfear的博客 1611

智能制造——解读AI+工业设备预测性维护解决方案【附全文阅读】

摘要:本方案面向设备密集型制造企业,提供基于AI的预测性维护解决方案。通过工业物联网、大数据和AI算法,整合传感器数据与专家知识库,构建异常检测、故障诊断等模型,实现设备台账管理、智能点检等核心功能。方案配套软硬件工具矩阵,已在锂电子等行业落地应用,可降低维护成本30%以上,减少非计划停机50%,助力企业智能化转型。

cdfunlove的博客 138

计算电磁学(三)有限差分方法

有限差分方法(FDM)是一种数值处理方法,通过将偏微分方程变换为一组代数方程,通过求解代数方程组来得到原边值问题的近似值。由于有限差分法非常简单,所以也特别的稳定高效。其中时域有限差分方法(FDTD)是电磁分析中的常用方法。在计算电磁学中,常用有限差分方法(finite difference equations)来替代微分方程。一个有限差分法通常包括三个步骤将求解域划分网格用有限差分方程逼近给定的微分方程求解在给定边界条件和初始状态下的方程常用的网格模型方阵斜方阵三角阵圆形阵。

CCC_B的博客 1639

Workerman定时任务

【代码】Workerman定时任务。

withoutfear的博客 1566

【原创】汇川H5U PLC控制伺服的方法

6、在线调试-进入伺服调试,可以在本软件上进行调试,可以实现原点回归、正向点动、反向电动、使能(这里使能打开时触摸屏上的使能不能打开,会冲突)、复位、停止(如下图所示)。5、在原点返回设置中一般情况下对原点信号、正限位、负限位、原点返回方向、原点返回方式进行设置,其他设置默认不改(如下图所示)。3、在单位换算设置上只需要修改脉冲数和移动量(根据伺服配套导轨上名牌进行设置),其他设置默认不改(如下图所示)。11、双击后右边出现编辑框 在上半部分定义变量(IN、INOUT、OUT、VAR)(如下图所示)。

Qinmingyue13的博客 6662

Fastadmin链接多个数据库

【代码】Fastadmin链接多个数据库。

withoutfear的博客 1440

1553B总线介绍及其硬件方案设计

军用1553B总线 1.简介 简单介绍可参考(https://blog.youkuaiyun.com/ScilogyHunter/article/details/108444231)博主写的很详细。 1553B总线是MIL-STD-1553总线的简称,其中B就是BUS,MIL-STD-1553B总线是飞机内部时分制命令/响应式多路复用数据总线。1553B数据总线标准是20世纪70年代由美国公布的一种串行多路数据总线标准。1553B总线能挂31个远置终端,1553B总线采用指令/响应型通信协议,它有三种终端类型: BC:

小幽余生不加糖 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Fastadmin 子级菜单展开合并,分类父级归纳

这里踩过一个坑,fastadmin默认的展开合并预定义处理的变量是pid。所以建表时父级id需要是pid;当然不是pid也没关系,笔者这里是classify_id,多加一步处理一样能实现。

withoutfear的博客 1379

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Fastadmin解决异步高并发大并发阻塞超时问题

使用guzzle 实现,需要先引用。

withoutfear的博客 1214

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

fastadmin列表页展示分类名称通用搜索按分类名称搜索

fastadmin列表页展示分类名称通用搜索按分类名称搜索

withoutfear的博客 1044

FastAdmin自定义滚动条

实现fastadmin表格自定义滚动条

withoutfear的博客 642

给FastAdmin项目中的切换开关按钮添加文字提示

给FastAdmin项目中的切换开关按钮添加文字提示: 要修改的文件路径:public/assets/js/require-table.js 的第430行 toggle: function (value, row, index) { var color = typeof this.color !== 'undefined' ? this.color : 'success'; var yes...

withoutfear的博客 517
上一篇: Fastadmin的selectPage组件跨表获取数据joinSelectPage修改版,获取多表关联查询数据,支持搜索
下一篇: IntelliJ IDEA卡顿内存分配不足和索引被频繁触发问题解决办法
withoutfear
博客等级 码龄13年 541粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

withoutfear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值