phpexcel导入导出

前言:
如果你到处的excel软件打开有问题,下面有介绍解决办法
在这里插入图片描述

导入

1. composer init 初始化

2. 下载phpspreadsheet

这里需要注意php版本,需要大于7.2

composer require phpoffice/phpspreadsheet

3. 编写代码

<?php
require 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\IOFactory;
//$filePath = './test.xls'; //测试文件xls
$filePath = './test2.xlsx'; //测试文件 xlsx
try{$spreadsheet = IOFactory::load($filePath);
} catch (Exception $e) {die('Error loading file "' . pathinfo($filePath, PATHINFO_BASENAME) . '": ' . $e->getMessage());
}$sheet = $spreadsheet->getActiveSheet();// 读取第一行作为表头
$headers = [];
$rowIterator = $sheet->getRowIterator(1, 1);
foreach ($rowIterator as $row) {$cellIterator = $row->getCellIterator();$cellIterator->setIterateOnlyExistingCells(false);foreach ($cellIterator as $cell) {$headers[] = $cell->getValue();}
}// 初始化一个空数组来存储数据
$data = [];
$rowIterator = $sheet->getRowIterator(2);
foreach ($rowIterator as $row) {$cellIterator = $row->getCellIterator();$cellIterator->setIterateOnlyExistingCells(false);$rowData = [];$columnIndex = 0;foreach ($cellIterator as $cell) {if (isset($headers[$columnIndex])) {$rowData[$headers[$columnIndex]] = $cell->getValue();}$columnIndex++;}$data[] = $rowData;
}echo json_encode($data);

4. 查看结果

在这里插入图片描述

导出

导出代码(保存到服务器根目录)

<?phprequire 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;// 假设的 $data 数组,这里只展示了两条数据作为示例
$data = [['id' => 1, '姓名' => '张三', '年龄' => 30],['id' => 2, '姓名' => '李四', '年龄' => 25],['id' => 3, '姓名' => '王五', '年龄' => 30],['id' => 4, '姓名' => '赵柳', '年龄' => 31],['id' => 5, '姓名' => '无极', '年龄' => 40],['id' => 6, '姓名' => '哇塞', '年龄' => 55],['id' => 7, '姓名' => '电动', '年龄' => 18],// ... 添加更多数据直到 100 条
];// 创建一个 Spreadsheet 对象
$spreadsheet = new Spreadsheet();// 获取当前活动的 sheet
$sheet = $spreadsheet->getActiveSheet();// 设置表头
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', '姓名');
$sheet->setCellValue('C1', '年龄');// 为表头设置蓝色背景
$styleArray = ['fill' => ['fillType' => Fill::FILL_SOLID,'color' => ['rgb' => '0070C0',],],
];
$sheet->getStyle('1:1')->applyFromArray($styleArray);// 插入数据
$row = 2; // 从第二行开始插入数据
foreach ($data as $item) {$sheet->setCellValue('A' . $row, $item['id']);$sheet->setCellValue('B' . $row, $item['姓名']);$sheet->setCellValue('C' . $row, $item['年龄']);$row++;
}// 创建一个写入器来保存 Excel 文件
$writer = new Xlsx($spreadsheet);// 保存 Excel 文件
$fileName = 'example_with_data.xlsx';
$writer->save($fileName);echo "Excel 文件已生成: " . $fileName;

结果

在这里插入图片描述

导出浏览器直接打开

<?phprequire 'vendor/autoload.php';use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;// 假设的 $data 数组,这里只展示了两条数据作为示例
$data = [['id' => 1, '姓名' => '张三', '年龄' => 30],['id' => 2, '姓名' => '李四', '年龄' => 25],['id' => 3, '姓名' => '王五', '年龄' => 30],['id' => 4, '姓名' => '赵柳', '年龄' => 31],['id' => 5, '姓名' => '无极', '年龄' => 40],['id' => 6, '姓名' => '哇塞', '年龄' => 55],['id' => 7, '姓名' => '电动', '年龄' => 18],// ... 添加更多数据直到 100 条
];// 创建一个 Spreadsheet 对象
$spreadsheet = new Spreadsheet();// 获取当前活动的 sheet
$sheet = $spreadsheet->getActiveSheet();// 设置表头
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', '姓名');
$sheet->setCellValue('C1', '年龄');// 为表头设置蓝色背景
$styleArray = ['fill' => ['fillType' => Fill::FILL_SOLID,'color' => ['rgb' => '0070C0',],],
];
$sheet->getStyle('1:1')->applyFromArray($styleArray);// 插入数据
$row = 2; // 从第二行开始插入数据
foreach ($data as $item) {$sheet->setCellValue('A' . $row, $item['id']);$sheet->setCellValue('B' . $row, $item['姓名']);$sheet->setCellValue('C' . $row, $item['年龄']);$row++;
}// 创建一个写入器来保存 Excel 文件
$writer = new Xlsx($spreadsheet);// 保存 Excel 文件
$fileName = date("Y-m-d").'_data.xlsx';
/* $writer->save($fileName);*/// 禁止浏览器缓存
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);// 设置内容类型
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');// 设置下载文件的名称
header('Content-Disposition: attachment; filename="'.$fileName.'"');// 发送文件内容到浏览器
// 注意:这里我们并没有使用 $writer->save() 方法来保存文件到磁盘
// 而是将文件内容直接输出到浏览器
$writer->save('php://output');
exit();

问题

直接下载excel文件
如果用excel打开出现 “发现不可读的内容。。。。”提示,很大可能是在
在这里插入图片描述
需要加上exit();结束, 意思是后面不能再有其他的输入了

$writer->save('php://output');
exit();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40115.shtml

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

相关文章

WPF 3D绘图 点云 系列五

基本概念:点云是某个坐标系下的点的数据集。 可能包含丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等 点云可以将现实世界原子化,通过高精度的点云数据可以还原现实世界。万物皆点云。 通过三维激光扫描仪进行数据采集获取点云数据,其次通过二维影像进行…

Java | Leetcode Java题解之第213题打家劫舍II

题目&#xff1a; 题解&#xff1a; class Solution {public int rob(int[] nums) {int length nums.length;if (length 1) {return nums[0];} else if (length 2) {return Math.max(nums[0], nums[1]);}return Math.max(robRange(nums, 0, length - 2), robRange(nums, 1,…

小试牛刀-区块链代币锁仓(Web页面)

Welcome to Code Blocks blog 本篇文章主要介绍了 [区跨链代币锁仓(Web页面)] ❤博主广交技术好友&#xff0c;喜欢我的文章的可以关注一下❤ 目录 1.编写目的 2.开发环境 3.实现功能 4.代码实现 4.1 必要文件 4.1.1 ABI Json文件(LockerContractABI.json) 4.2 代码详解…

AI绘画-Stable Diffusion 原理介绍及使用

引言 好像很多朋友对AI绘图有兴趣&#xff0c;AI绘画背后&#xff0c;依旧是大模型的训练。但绘图类AI对计算机显卡有较高要求。建议先了解基本原理及如何使用&#xff0c;在看看如何实现自己垂直行业的绘图AI逻辑。或者作为使用者&#xff0c;调用已有的server接口。 首先需…

掌握Mojolicious会话管理:构建安全、持久的Web应用

掌握Mojolicious会话管理&#xff1a;构建安全、持久的Web应用 Mojolicious是一个基于Perl的高性能、异步Web开发框架&#xff0c;它提供了一套完整的工具来构建现代Web应用。会话管理是Web开发中的一个关键组成部分&#xff0c;它允许应用识别和保持用户的登录状态。本文将深…

单片机软件架构连载(3)-typedef

今天给大家讲typedef&#xff0c;这个关键字在实际产品开发中&#xff0c;也是海量应用。 技术涉及知识点比较多&#xff0c;有些并不常用&#xff0c;我们以贴近实际为原则&#xff0c;让大家把学习时间都花在重点上。 1.typedef的概念 typedef 是 C 语言中的一个关键字&…

WhatsApp机器人:提升客户服务效率的自动化工具

在数字化转型的浪潮中&#xff0c;客户服务领域正经历着一场革命。WhatsApp机器人以其即时性、便捷性和高效性&#xff0c;正在成为企业提升客户服务效率的有力工具。 引言 客户服务是企业与用户建立信任和忠诚度的关键环节。然而&#xff0c;随着用户基数的增长&#xff0c;…

DP:背包问题----0/1背包问题

文章目录 &#x1f497;背包问题&#x1f49b;背包问题的变体&#x1f9e1;0/1 背包问题的数学定义&#x1f49a;解决背包问题的方法&#x1f499;例子 &#x1f497;解决背包问题的一般步骤&#xff1f;&#x1f497;例题&#x1f497;总结 ❤️❤️❤️❤️❤️博客主页&…

【RflySim学习笔记】1.RflySim的绪论

目录 文章目录 目录1.RflySim 平台背景2.RflySim 平台特点3.RflySim 平台核心组件介绍3.1 CopterSim3.2 RflySim3D/RflySimUE5UE引擎&#xff1a;RflySim3D/RflySimUE5 3.3 QGroundControl地面站3.4 Python38Env3.5 MATLAB自动代码生成工具箱3.6 SITL/HITL批处理脚本3.7 PX4 Fi…

vue+js 监听组合按键 比如ctrl+f

vuejs 监听组合按键 比如ctrlf 需求&#xff1a;页面中有一个搜索功能&#xff0c;增加快捷键触发 <template><div id"app" ></div> </template><script> export default {mounted() {window.addEventListener(keydown, this.copyTe…

CentOS 7 arm64架构制作openssl 1.1.1w 二进制rpm包——筑梦之路

制作过程几乎和这篇CentOS 7 制作openssl 1.1.1w 版本rpm包 —— 筑梦之路_centos7 openssl 1.1.1 rpm包-CSDN博客 无差别&#xff0c;因此不再赘述。 本次制作主要修改了spec文件&#xff0c;将openssl安装路径修改为/usr/local/openssl。 2024年7月3日 二进制rpm包和src…

vue3实现多表头列表el-table,拖拽,鼠标滑轮滚动条优化

需求背景解决效果index.vue 需求背景 需要实现多表头列表的用户体验优化 解决效果 index.vue <!--/** * author: liuk * date: 2024-07-03 * describe:**** 多表头列表 */--> <template><el-table ref"tableRef" height"calc(100% - 80px)&qu…

springboot+vue+mybatis前台点菜系统+PPT+论文+讲解+售后

21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存储达到…

数字政务信息系统的技术架构方案和发展趋势研究

随着信息技术的飞速发展&#xff0c;数字政务已经成为推动政府治理体系和治理能力现代化的重要手段。数字政务信息系统作为政府信息化建设的重要组成部分&#xff0c;不仅能够提高政府工作效率&#xff0c;还能更好地服务于民众&#xff0c;提升公众满意度。本文将以“数字政务…

Golang | Leetcode Golang题解之第214题最短回文串

题目&#xff1a; 题解&#xff1a; func shortestPalindrome(s string) string {n : len(s)fail : make([]int, n)for i : 0; i < n; i {fail[i] -1}for i : 1; i < n; i {j : fail[i - 1]for j ! -1 && s[j 1] ! s[i] {j fail[j]}if s[j 1] s[i] {fail[i…

SDIO学习(2)--SD 2.0协议

目录 1. SD卡简介 1.1 SD卡概念 1.2 SD卡外形和接口 2. SD 2.0主要特性 3. SD 卡系统概念 3.1 读写属性 3.2 总线拓扑结构 3.2.1 SD模式 3.2.2 SPI模式 3.3 SD 2.0总线协议 3.3.1 命令&#xff08;Command&#xff09; 3.3.1.1 命令分类 3.3.1.2 命令格式 3.3.1.…

精确计算应用的冷启动耗时

在iOS项目中&#xff0c;冷启动时间是指从用户点击应用图标开始&#xff0c;到应用完全加载并呈现出第一个界面&#xff08;可能需要网络请求必要的数据&#xff09;所花费的时间。这里以 main 函数为界&#xff0c;分为两个时间段&#xff1a; 从用户点击应用图标 ~ invoke m…

单片机cmake使用笔记

一、同时拥有两个工程项目时的配置&#xff08;APP IAP&#xff09;方便git等工具的管理 1.1、目录结构如下&#xff1a; |-Power_prj|-CMakelists.txt| |-Power_APP| | |-src| | |-include| | |-main.c| | …

(4)深入探索与优雅安装:Pandas数据处理的魅力之旅

目录 1. 前言1.1 Pandas 概述1.2 Pandas 特点1.3 优化应用举例1.4 Pandas 应用场景 2. DataFrame2.1 DataFrame结构2.2 Pandas 安装2.2.1 Pandas 安装准备2.2.2 Pandas 安装2.2.3 Pandas 包的导入2.2.4 查看 pandas 版本2.2.5 一个简单的 1. 前言 1.1 Pandas 概述 pandas 是 …

大数据招商的应用场景及实施路径有哪些?

当下&#xff0c;我国已经进入数字经济与实体经济融合发展的新阶段&#xff0c;数字技术和数字化转型落地日臻成熟&#xff0c;数据要素价值释放深入到了我国各个领域的发展&#xff0c;招商引资也不例外&#xff0c;在传统招商模式效果日渐甚微的大环境下&#xff0c;大数据招…