PhpSpreadsheet表格导出

2024-06-04 01:36

本文主要是介绍PhpSpreadsheet表格导出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

个人笔记记录

使用PhpSpreadsheet 导出excel。

多重表头生成excel 表

    //读取数据库public function demo1(){// 连接spc数据库$config = Config::get('databaseedc');$db = Db::connect($config);$data =$db->name("xxxx")->alias('a')->field('main_header, sub_header,fvi_value')->join('')->where('')->select();$this->exportDataToExcel($data);}
    // 将数据转换为Excel格式并保存function exportDataToExcel($data) {//从初始化表格$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();// 处理数据和表头$mainHeaders = $this->getMainHeaders($data);//提取次级表头和数据$subHeadersAndData = $this->getSubHeadersAndData($data);// 设置表头$this->setHeaders($sheet, $mainHeaders, $subHeadersAndData);//设置Excel的数据$currentRow = 2;//初始行$col=1; //初始列//循环主表头foreach ($mainHeaders as $subData){//循环次级表头和数据foreach ($subHeadersAndData as $subHeaderKey => $subHeaderData) {// 获取主表头部分$mainHeaderPart = explode('_', $subHeaderKey)[0];//查找于当前表头一致的数据if($mainHeaderPart==$subData){echo("<pre>");print_r($subHeaderKey);//设置子标题:$sheet->setCellValueByColumnAndRow($col, $currentRow, $subHeaderData['sub_header']);//设置子标题相关的数据foreach ($subHeaderData['data'] as $index => $value) {$sheet->setCellValueByColumnAndRow($col, $currentRow + $index + 1, $value);}$col++;}}}// 保存文件$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');$filename = './excel/' . date('YmdHis') . '.xlsx'; // 使用动态文件名避免冲突$result = $writer->save($filename);}
    //从数据中提取主表头public function getMainHeaders($data) {$mainHeaders = [];foreach ($data as $item) {//检查 main_header 是否已在 $mainHeaders 中if (!in_array($item['main_header'], $mainHeaders)) {//不存在,加入数组$mainHeaders[] = $item['main_header'];}}return $mainHeaders;}
    //从数据中提取次级表头和数据function getSubHeadersAndData($data) {$subHeaders = [];//存储处理后的子标题及其相关数据$rowData = [];foreach ($data as $item) {$subHeaderKey = $item['main_header'] . '_' . $item['sub_header'];//检查 $subHeaders 数组中是否已经存在该子标题键if (!isset($subHeaders[$subHeaderKey])) {$subHeaders[$subHeaderKey] = ['sub_header' => $item['sub_header'],'data' => []];}//$item 中的 'fvi_value' 添加到与该子标题关联的 'data' 数组中。$subHeaders[$subHeaderKey]['data'][] = $item['fvi_value'];}return $subHeaders;}
    //设置Excel的表头function setHeaders($sheet, $mainHeaders, $subHeadersAndData) {//从第一行第一列开始$col = 1;$row = 1;//遍历主标题foreach ($mainHeaders as $mainHeader) {//设置主标题$sheet->setCellValueByColumnAndRow($col, $row, $mainHeader);//计算与当前主标题相关的子标题数量$subHeadersCount = count(array_filter(array_keys($subHeadersAndData), function($key) use ($mainHeader) {return strpos($key, $mainHeader . '_') === 0;}));//合并单元格if ($subHeadersCount > 0) {$sheet->mergeCells(Coordinate::stringFromColumnIndex($col) . $row . ':' . Coordinate::stringFromColumnIndex($col + $subHeadersCount - 1) . $row);}//更新列索引:$col += $subHeadersCount;}}

在这里插入图片描述

这篇关于PhpSpreadsheet表格导出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028697

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重