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

说明

本文章是基于上一篇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.mzph.cn/bicheng/7410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

已解决java.util.IllegalFormatConversionException异常的正确解决方法,亲测有效!!!

已解决java.util.IllegalFormatConversionException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 示例报错代码&#xff1a; 解决思路 解决方法 检查和更正格式说明符 示例修正代码&#xff1a; 调整参数类型…

【Linux 基础 IO】文件系统

文章目录 1.初步理解文件2. fopen ( )的详解 1.初步理解文件 &#x1f427;① 打开文件&#xff1a; 本质是进程打开文件&#xff1b; &#x1f427;②文件没有被打开的时候在哪里呢&#xff1f; ----- 在磁盘中&#xff1b; &#x1f427;③进程可以打开很多个文件吗&#xff…

1329. 将矩阵按对角线排序

1329. 将矩阵按对角线排序 题目链接&#xff1a;1329. 将矩阵按对角线排序 代码如下&#xff1a; //参考&#xff1a;https://leetcode.cn/problems/sort-the-matrix-diagonally/solutions/2760094/dui-jiao-xian-pai-xu-fu-yuan-di-pai-xu-p-uts8 class Solution { public:v…

Android Ant编译环境配置(Win)

1、 载ant包: 2、设置环境变量&#xff1a; 3、检查是否设置成功及版本 4、执行命令&#xff1a; android update project -p . -n “projectname”&#xff08;例如&#xff1a;android update project --target 1 -p . -n “Couplet”&#xff09;(只输入红色部分也是可以的…

[Docker]容器的网络类型以及云计算

目录 知识梗概 1、常用命令2 2、容器的网络类型 3、云计算 4、云计算服务的几种主要模式 知识梗概 1、常用命令2 上一篇已经学了一些常用的命令&#xff0c;这里补充两个&#xff1a; 导出镜像文件&#xff1a;[rootdocker ~]# docker save -o nginx.tar nginx:laster 导…

HTML5实现酷炫个人产品推广、工具推广、信息推广、个人主页、个人介绍、酷炫官网、门户网站模板源码

1. 首先&#xff0c;创建一个HTML文件&#xff0c;例如index.html&#xff0c;并添加以下内容&#xff1a; html <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content&q…

美港通正规炒股暴涨近1.5倍,石墨概念港股飙升背后是这个原因

查查配5月6日讯(编辑童古)石墨概念港股早盘高开高走。截至发稿,烯石电车新材料(06128.HK)涨近148%;中国石墨(02237.HK)涨38%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投…

Mysql8本地安装

官网&#xff1a; https://www.mysql.com/ yum安装下载&#xff1a;https://dev.mysql.com/downloads/repo/yum/ 二进制安装下载&#xff1a;https://downloads.mysql.com/archives/community/ 安装包下载 yum安装下载 打开网址&#xff08;https://dev.mysql.com/downloads/r…

2024年美国市场亚太游戏品牌数字广告洞察报告

来源&#xff1a;Sensor Tower 美国是全球最大的游戏市场之一&#xff0c;也是亚太游戏品牌出海的重要市场。2023年Q2至2024年Q1&#xff0c;美国市​场广告投放额排名前10的亚太游戏品牌&#xff0c;合计支出 超过7.5亿美元&#xff0c;环比上涨23%。 排名第一的米哈游(miHoY…

Java——this构造方法标准类

一&#xff1a;this用法 当成员变量与方法中的形参名相同时&#xff0c;采用就近原则&#xff1b; 如下&#xff0c;调用 method 时&#xff0c;两个 name 均为方法中形参的 name , 即采用就近原则&#xff1b; public class ThisDemo {public String name; /…

Linux 基础IO篇

1. C语言中的文件操作 1 #include<stdio.h>2 3 int main()4 {5 FILE* pf fopen("log.txt", "w");6 if(NULL pf)7 {8 perror("fopen");9 return 1; 10 }11 fprintf(pf, &quo…

第二届生成式AI应用创新大赛

&#x1f525; 第二届生成式AI应用创新大赛 &#x1f331; 初赛正如火如荼地进行中&#xff0c;报名截止时间是5月15日&#xff01; ⏰ ⭐ 最激动人心的总决赛将于5月30日在亚马逊上海峰会上举行&#xff0c;届时会有权威评委现场点评&#xff01; &#x1f3a4; &#x1f3…

Intellij IDEA 同一段落中同时选中修改多个相同的单词

Intellij IDEA 同一段落中同时选中修改多个相同的单词 IDEA 在实际应用中&#xff0c;有时需要同时修改多个单词的情况&#xff0c;在这里提供两种方法 第一种 在一段落中选中高亮单词&#xff0c;按 ALT J 向下选中多个想要修改的单词&#xff0c;然后[直接修改] (https://so…

GitPython 使用教程

GitPython 使用教程 GitPython 是一个用于与 Git 版本控制系统进行交互的 Python 库。它提供了简单的接口&#xff0c;让你可以通过 Python 代码执行 Git 命令和操作 Git 仓库。 1. 安装 GitPython 你可以使用 pip 在命令行中安装 GitPython&#xff1a; pip install gitpy…

327_C++_C风格和C++风格写文件操作

C、C++区别开: 将 std::string 对象 tmp_nvr_style 的内容复制到字符数组 tmpRcFileData 中。然而,这样做存在几个问题: 1、tmpRcFileData 的大小应该至少为 tmp_nvr_style.size() + 1 以容纳字符串的终止字符 \0。 2、std::copy 不会添加终止字符。 使用 C 风格的字符串(…

vue3 + ts实现canvas绘制的waterfall

实际运行效果(仅包含waterfall图表部分) component.vue <template><div ref="heatmap" :style="{ height: props.containerHeight + px }" /> </template><script setup> import ColorMap from "colormap"; import…

一次有关 DNS 解析导致 APP 慢的问题探究

一、业务背景 HTTTPDNS AWS Router53 APP 使用 HTTPDNS&#xff0c; 为解决 DNS 解析生效慢&#xff0c; DNS 劫持等问题。 我们 IOS 和安卓都是使用了 HTTPDNS。 域名托管在 AWS Router53。 域名有多个解析(基于延迟)&#xff0c;为了解决就近接入。 示例配置 ai.baidu.c…

首席数据官CDO行业背景主要职责是什么?

首席数据官&#xff08;Chief Data Security Officer&#xff0c;简称CDO&#xff09;&#xff0c;是指在企业中负责整个机构的数据安全策略&#xff0c;监控、治理、控制、协调企业内部的数据安全工作、政策制定和有效利用的高级管理人员。包括信息技术、人力资源、通信、合规…

英语学习笔记3——Sorry, sir.

Sorry, sir. 对不起&#xff0c;先生。 词汇 Vocabulary umbrella n. 伞&#xff0c;保护伞 注意读音 [ʌm’brelə] 英国人离不开雨伞。 please 请 特殊用法&#xff1a;让路&#xff08;升调&#xff09;      用餐礼仪&#xff08;平调&#xff09;      求求你…

domain-id(OSPF)

命令功能 domain-id命令用来配置OSPF域标识符。 undo domain-id命令用来恢复缺省值。 缺省情况下&#xff0c;域标识符的值为NULL。 命令格式 domain-id { null | domain-id [ type type value value | secondary ] * } undo domain-id [ domain-id [ type type value val…