ThinkPHP8导出Excel单元格为下拉选择框

embedded/2024/9/19 20:51:27/ 标签: excel, Thinkphp, 导出Excel, 导出Excel下拉, PHP
说明

本文章是基于上一篇ThinkPHP8 导出Excel数据表格文章的完善版,上一篇仅导出为文本框,此处增加下拉框。

其他内容与上一章不变,此处展示不同内容。

更改

1.头部数组修改

增加type类型,text为文本框,select为下拉框,具体其他需求自行扩展。

['key' => 'field', 'title' => '内容', 'type' => 'text'],
['key' => 'date', 'title' => '日期', 'type' => 'select'],

2.设置内容方法修改

仅需要替换该方法即可,具体内容可根据业务场景自行修改。

/*** @notes 设置单元格值* @param array $data 数据* @param array $header 表头数据* @param string|int $startRow 默认第二行开始* @return object*/public function setContent(array $data, array $header, string|int $startRow = 2): object{//  获取总列数$column = $this->getColumn(count($header));$totalColumn = count($data);//  遍历数据foreach ($data as $key => $value) {//  遍历表头for ($i = 0; $i < count($header); $i++) {//  获取单元格名称$columnName = $column[$i] . ($key + $startRow);$columnType = $header[$i]['type'];$columnValue = $value[$header[$i]['key']] ?? '';//  设置单元格数据switch ($columnType) {case 'text':$this->sheet->getActiveSheet()->setCellValue($columnName, $columnValue);break;case 'select':$objValidation = $this->sheet->getActiveSheet()->getCell($columnName)->getDataValidation();$objValidation->setType(DataValidation::TYPE_LIST)->setErrorStyle(DataValidation::STYLE_INFORMATION)->setAllowBlank(false)->setShowInputMessage(true)->setShowErrorMessage(true)->setShowDropDown(true)->setErrorTitle('输入的值有误')->setError('您输入的值不在下拉框列表内.')->setPromptTitle('')->setPrompt('')->setFormula1('"' . $columnValue . '"');break;default:$this->sheet->getActiveSheet()->setCellValue($columnName, $value[$header[$i]['key']] ?? '');}//  设置单元格自适应宽度$this->sheet->getActiveSheet()->getColumnDimension($column[$i])->setAutoSize(true);//  设置单元格自适应高度$this->sheet->getActiveSheet()->getRowDimension($key + $startRow)->setRowHeight(24);}unset($data[$key]);}$startColumn = $column[0] . $startRow;$endColumn = $column[count($column) - 1] . $totalColumn + $startRow - 1;//  设置字体大小及加粗$this->sheet->getActiveSheet()->getStyle($startColumn . ':' . $endColumn)->getFont()->setBold(false)->setSize(11);//  设置单元格水平居中$this->sheet->getActiveSheet()->getStyle($startColumn . ':' . $endColumn)->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);//  设置单元格垂直居中$this->sheet->getActiveSheet()->getStyle($startColumn . ':' . $endColumn)->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);//  设置单元格边框$this->sheet->getActiveSheet()->getStyle($startColumn . ':' . $endColumn)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN);return $this->sheet;}


http://www.ppmy.cn/embedded/41224.html

相关文章

Java高阶私房菜:JVM性能优化案例及讲解

目录 核心思想 优化思考方向 压测环境准备 堆大小配置调优 调优前 调优后 分析结论 垃圾收集器配置调优 调优前 调优后 分析结论 JVM性能优化是一项复杂且耗时的工作&#xff0c;该环节没办法一蹴而就&#xff0c;它需要耐心雕琢&#xff0c;逐步优化至理想状态。“…

科技查新中医学科研项目查新点如何确立与提炼?案例讲解

一、前言 医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c;通过在一定范围内进行该课题的相关文献检索 ( 可以根据项目委托人的具体要求&#xff0c;进行国内检索或者进行国外检索 ) &#x…

LeetCode2352相等行列对

题目描述 给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid &#xff0c;返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。如果行和列以相同的顺序包含相同的元素&#xff08;即相等的数组&#xff09;&#xff0c;则认为二者是相等的。 解析 针对题目给出的数量级…

LVS负载均衡超详细入门介绍

LVS 一、LVS入门介绍 1.1.LVS负载均衡简介 1.2.负载均衡的工作模式 1.2.1.地址转换NAT&#xff08;Network Address Translation&#xff09; 1.2.2.IP隧道TUN&#xff08;IP Tunneling&#xff09; 1.2.3.直接路由DR&#xff08;Direct Routing&#xff09; 1.3.…

(论文阅读-分析引擎)Modin

一、简介 目标是在不改变的Dataframe语义的情况下支持可扩展的dataframe操作。 什么是机会主义评价&#xff1f;Opportunistic Evaluation&#xff1f; Exploratory data analysis&#xff08;EDA&#xff09;&#xff1a;总结、理解并从数据集中获取价值的过程。 MPI&#…

Java Swing游戏开发学习27

内容来自RyiSnow视频讲解 这一节讲的是Equip & Use Items装备与使用物品。 前言 实现捡起物品、切换武器装备、使用物品。 修复问题 当光标在物品栏&#xff08;背包&#xff09;中移动到没有物品的格子中的时候&#xff0c;使装备介绍子窗口不可见&#xff0c;反之可见…

开源工时填报管理系统部署

1、工时管理系统的重要性 对于企业来说,工时管理往往和生产效率、成本、项目成率挂钩,所以其重要性是不容忽视的,并且主要体现在以下几个方面: 提高生产效率:通过精确记录员工的工作时间,工时管理系统一定程度可以帮助企业更好地了解员工的工作状态和效率。这将有助于企…

7nm项目之模块实现——02 Placeopt分析

一、Log需要看什么 1.log最后的error 注意&#xff1a;warnning暂时可以不用过于关注&#xff0c;如果特别的warning出现问题&#xff0c;在其他方面也会体现 2.run time 在大型项目实际开发中&#xff0c;周期一般较长&#xff0c;可能几天过这几周&#xff0c;所以这就需要…

使用curl命令查看服务器端口开放情况

目录 1.ssh端口 22 2.mysql数据库端口 3306 3.web应用端口 &#xff08;Jellyfin 8082&#xff09; &#xff08;wordpress 8088&#xff09; &#xff08;tomcat 8080&#xff09; 4.不存在的端口 5.被防火墙阻挡的端口 1.ssh端口 22 curl -v 10.10.10.205:22 curl…

栅格地图、障碍物地图与膨胀地图(障碍物地图(三)写一张障碍物地图)

花了不少时间看完了障碍物地图的大致思路&#xff0c;这里简单根据前面的思路来写一个简易版的障碍物地图。 1.订阅一张地图 首先&#xff0c;我们需要一张静态地图作为原始数据&#xff0c;这个我们可以订阅当前的map来获取&#xff1a; void map_test1::MapCallback(const…

特征提取与深度神经网络(二)

关键点/角点检测 2011论文-ORB关键点检测&#xff0c;比SIFT与SURF速度更快。 ORB算法可以看出两个部分组成&#xff1a;快速关键点定位BRIEF描述子生成 Fast关键点检测&#xff1a; 选择当前像素点P&#xff0c;阈值T&#xff0c;周围16个像素点&#xff0c;超过连续N12个像素…

AI电视起风,三星电视打破“隔代飞跃”,在AI纪元再次领跑

作者 | 曾响铃 文 | 响铃说 要说什么是当下最热的话题&#xff0c;刚落下帷幕的北京车展一定是其中之一&#xff0c;除了各类让人眼花缭乱的新车&#xff0c;纷至沓来的各界行业大佬&#xff0c;也让车展话题度被不断拉高。在此之外&#xff0c;此次车展还刮起了一股“旋风”…

【Delphi 爬虫库 5】HTTP响应状态码说明详解(Response Status Code)

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是互联网上应用最广泛的协议之一&#xff0c;用于在客户端和服务器之间传输数据。在HTTP通信中&#xff0c;服务器在接收到客户端请求后&#xff0c;会返回一个HTTP响应&#xff0c;其中包含一个状态码&#xff0c;这个…

Android中gradle.properties 和 gradle-wrapper.properties 作用

我们更深入地了解这两个文件的作用和它们可以包含的一些常见配置。 gradle.properties gradle.properties文件是一个标准的Java属性文件&#xff0c;它允许你为Gradle构建配置全局属性。这些属性可以在项目的任何地方使用&#xff0c;包括项目的子项目。以下是一些常见的配置…

在React中利用Postman测试代码获取数据

文章目录 概要名词解释1、Postman2、axios 使用Postman测试API在React中获取并展示数据小结 概要 在Web开发中&#xff0c;通过API获取数据是一项常见任务。Postman是一个功能强大的工具&#xff0c;可以帮助开发者测试API&#xff0c;并查看API的响应数据。在本篇博客中&…

如何使用Sentinel实现流控和降级

Sentinel 是一款面向分布式系统的流量控制、熔断和自适应限流工具&#xff0c;由Alibaba开源。Sentinel 以Java客户端的形式提供&#xff0c;可以嵌入到Java应用中以保护系统稳定运行。 以下是使用Sentinel实现流量控制和降级操作的详细步骤&#xff1a; 1. 添加Sentinel依赖…

《架构风清扬-Java面试系列第29讲》聊聊DelayQueue的使用场景

DelayQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;延迟队列&#xff0c;其中元素只有在其预定…

linux修改目录和文件的权限,linux修改目录下所有文件的权限

查看权限 ls -l your-script.sh 为所有者添加读取和执行权限&#xff08;目录级别&#xff0c;当前目录下所有文件&#xff09; chmod urx * 为组用户添加读取权限&#xff08;目录级别&#xff0c;当前目录下所有文件&#xff09; chmod gr * 为其他用户添加读取和执行权限…

Pytorch学习-引言

Pytorch相关链接 Pytorch官方网站 https://pytorch.org/ Pytorch的Github仓库 https://github.com/pytorch/pytorch Pytorch论坛 https://discuss.pytorch.org/ Pytorch离线下载包链接 https://download.pytorch.org/whl/torch_stable.html Pytorch学习视频推荐链接 http://【…

【漏洞复现】瑞友天翼应用虚拟化系统 appsave SQL注入漏洞

0x01 产品简介 N/A 0x02 漏洞概述 瑞友天翼应用虚拟化系统 appsave接口存在SQL注入漏洞,未授权的攻击者可以通过该漏洞执行任意sql语句。 0x03 测绘语句 fofa: body="瑞友天翼 - 应用虚拟化系统" 0x04 漏洞复现 1、执行sql语句:http://xxxx/hmrao.php?s=/Ad…