Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
如何使用PHPSpreadsheet修改并保存现有Excel文件_创想鸟

如何使用PHPSpreadsheet修改并保存现有Excel文件

如何使用PHPSpreadsheet修改并保存现有Excel文件

本教程详细讲解如何利用PHPSpreadsheet库加载、修改现有Excel电子表格,并将其保存回文件系统。通过使用IOFactory进行读取和写入操作,您可以轻松更新单元格内容、添加新行,并确保数据持久化,有效避免常见的类型错误。

在日常开发中,我们经常需要对现有的excel文件进行数据更新、追加记录或格式调整。phpspreadsheet是一个功能强大且易于使用的php库,专门用于读写各种电子表格文件格式。本教程将引导您完成加载现有excel文件、修改其内容并将其保存回文件系统的完整过程。

1. 准备工作

在开始之前,请确保您的项目中已安装PHPSpreadsheet。您可以通过Composer进行安装:

composer require phpoffice/phpspreadsheet

2. 加载现有Excel文件

要修改一个现有的Excel文件,首先需要将其加载到PHPSpreadsheet的Spreadsheet对象中。推荐使用IOFactory来自动识别文件类型并创建相应的读取器(Reader)。

getMessage());}// ... 后续操作

注意事项:

务必在操作前引入vendor/autoload.php。IOFactory::load() 方法能够处理多种文件类型(如Xlsx, Xls, Csv等),无需手动指定Reader类型。添加文件存在性检查和异常捕获,以提高代码的健壮性。

3. 修改电子表格内容

加载文件后,您可以获取工作表(Sheet)并进行各种修改操作,例如设置单元格值、追加新行等。

立即学习“PHP免费学习笔记(深入)”;

获取活动工作表

// 获取当前活动的工作表$sheet = $spreadsheet->getActiveSheet();echo "已获取活动工作表。n";

设置特定单元格的值

您可以直接通过单元格坐标设置其值:

// 修改A1单元格的值$sheet->setCellValue('A1', '新的标题');echo "A1单元格已更新为 '新的标题'。n";

追加新数据行

在现有数据之后追加新行是常见的需求。这通常通过获取当前工作表的最高行数(getHighestRow())来实现。

// 获取当前工作表的最高行数$last_row = (int) $sheet->getHighestRow();// 新行号为最高行数加1$new_row = $last_row + 1;echo "当前最高行数为 {$last_row},新数据将写入第 {$new_row} 行。n";// 在新行中设置数据$sheet->setCellValue('A' . $new_row, "14");$sheet->setCellValue('B' . $new_row, "Alina");$sheet->setCellValue('C' . $new_row, "PG");$sheet->setCellValue('D' . $new_row, "$32");$sheet->setCellValue('E' . $new_row, "Pending");echo "新数据已成功追加到第 {$new_row} 行。n";

4. 保存修改后的文件

完成所有修改后,需要将Spreadsheet对象保存回文件系统。同样,推荐使用IOFactory::createWriter()来创建写入器(Writer)。

// ... (接上面的代码,在修改操作之后)try {    // 使用IOFactory创建写入器,并指定文件类型(例如 "Xlsx")    $writer = IOFactory::createWriter($spreadsheet, "Xlsx");    // 将修改后的电子表格保存回原文件,这将覆盖原文件    $writer->save($filePath);    echo "文件 '{$filePath}' 已成功保存并更新。n";} catch (PhpOfficePhpSpreadsheetWriterException $e) {    die("保存文件时发生错误:" . $e->getMessage());}?>

注意事项:

IOFactory::createWriter($spreadsheet, “Xlsx”) 会根据第二个参数(文件类型字符串)自动创建正确的写入器。$writer->save($filePath) 会将修改后的内容写入到指定路径,如果文件已存在,则会覆盖它。如果您想保存为新文件,只需提供不同的文件路径即可。确保PHP脚本对目标文件路径有写入权限。

5. 完整示例代码

以下是一个整合了加载、修改(包括追加数据)、保存的完整PHP代码示例:

getActiveSheet()->setCellValue('A1', 'ID');    $newSpreadsheet->getActiveSheet()->setCellValue('B1', 'Name');    $newSpreadsheet->getActiveSheet()->setCellValue('C1', 'City');    $newSpreadsheet->getActiveSheet()->setCellValue('D1', 'Salary');    $newSpreadsheet->getActiveSheet()->setCellValue('E1', 'Status');    $writer = IOFactory::createWriter($newSpreadsheet, 'Xlsx');    $writer->save($filePath);    unset($newSpreadsheet); // 释放内存    echo "已创建初始文件 '{$filePath}'。n";}try {    $spreadsheet = IOFactory::load($filePath);    echo "文件 '{$filePath}' 加载成功。n";} catch (PhpOfficePhpSpreadsheetReaderException $e) {    die("加载文件时发生错误:" . $e->getMessage());}// --- 步骤 2: 修改电子表格内容 ---// 获取当前活动的工作表$sheet = $spreadsheet->getActiveSheet();echo "已获取活动工作表。n";// 示例1: 修改特定单元格 (如果A1是标题,可以修改它)// $sheet->setCellValue('A1', '员工ID');// echo "A1单元格已更新为 '员工ID'。n";// 示例2: 追加新数据行$last_row = (int) $sheet->getHighestRow();$new_row = $last_row + 1;echo "当前最高行数为 {$last_row},新数据将写入第 {$new_row} 行。n";$sheet->setCellValue('A' . $new_row, "14");$sheet->setCellValue('B' . $new_row, "Alina");$sheet->setCellValue('C' . $new_row, "PG");$sheet->setCellValue('D' . $new_row, "$32");$sheet->setCellValue('E' . $new_row, "Pending");echo "新数据已成功追加到第 {$new_row} 行。n";// 您可以根据需要添加更多修改操作,例如:// $sheet->setCellValue('F' . $new_row, date('Y-m-d H:i:s')); // 添加时间戳列// $sheet->removeRow(2); // 删除第二行// --- 步骤 3: 保存修改后的文件 ---try {    $writer = IOFactory::createWriter($spreadsheet, "Xlsx");    $writer->save($filePath);    echo "文件 '{$filePath}' 已成功保存并更新。n";} catch (PhpOfficePhpSpreadsheetWriterException $e) {    die("保存文件时发生错误:" . $e->getMessage());}?>

6. 注意事项与最佳实践

使用IOFactory: 始终优先使用IOFactory::load()和IOFactory::createWriter()。它们能够根据文件扩展名智能地选择正确的Reader和Writer,减少代码复杂性并提高兼容性。直接实例化new PhpOfficePhpSpreadsheetWriterXlsx()等类容易因命名空间或参数错误导致TypeError。错误处理: 务必添加try-catch块来捕获文件操作可能抛出的异常(如文件不存在、无权限、文件损坏等),这对于生产环境中的应用程序至关重要。文件权限: 确保PHP运行用户对目标Excel文件及其所在目录拥有读取和写入权限。内存管理: 对于非常大的Excel文件,加载整个文件到内存可能会消耗大量资源。PHPSpreadsheet提供了Reader和Writer的内存优化选项(如setReadDataOnly、setLoadSheetsOnly),以及分块读取/写入(Chunk Reading/Writing)功能,以处理大型文件。命名空间: 确保正确使用use语句引入所需的类,或者使用完全限定的类名(如PhpOfficePhpSpreadsheetIOFactory::load())。

通过遵循本教程的步骤和最佳实践,您将能够高效且稳定地使用PHPSpreadsheet来修改和管理您的Excel文件。

以上就是如何使用PHPSpreadsheet修改并保存现有Excel文件的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1271654.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
本地开发环境下的Microsoft Sign-in功能模拟教程
上一篇 2025年12月10日 14:04:00
优化AJAX数据传输:在PHP后端处理混合类型POST数据为数组
下一篇 2025年12月10日 14:04:16

相关推荐

  • PHP中静态数组的优势与应用详解

    静态数组是PHP中一个重要的概念,理解其特性有助于编写更高效、更易于维护的代码。本文将详细介绍静态数组与普通数组的区别,以及静态数组在实际开发中的应用场景。 静态变量的作用域与生命周期 在PHP中,使用static关键字声明的变量具有特殊的性质。与普通变量不同,静态变量在函数或方法调用结束后不会被销…

    2026年9月28日
    100
  • 拼多多官网入口直接打开 拼多多网页版不用登录

    拼多多官网入口直接打开 拼多多网页版不用登录拼多多官网入口直接打开 拼多多网页版不用登录拼多多官网入口直接打开 拼多多网页版不用登录拼多多官网入口直接打开 拼多多网页版不用登录

    拼多多官网可通过浏览器直接访问https://www.pinduoduo.com,无需下载App即可浏览商品,支持扫码登录、拼团购物、限时秒杀及百亿补贴活动,网页版界面简洁,分类清晰,具备关键词搜索与筛选功能,未登录也可查看商品详情,便于比价;平台覆盖多品类商品,设有专题推荐,提升选购效率,且网页端…

    2026年9月28日 • 用户投稿
    000
  • 夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法

    夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法夸克扫描提取的表格是图片怎么办_夸克表格识别结果转为Excel文件方法

    首先确认是否启用表格识别模式,打开夸克App进入扫描界面,选择历史记录中的表格图片,点击“重新识别”并选用“表格识别”模式,完成后导出为Excel;若效果不佳,可将图片保存至相册后使用Microsoft Lens等OCR工具提取表格并导出.xlsx文件;还可通过浏览器桌面模式登录夸克账号,利用电脑端…

    2026年9月28日 • 用户投稿
    000
  • AutoRDPwn v4.8:一款功能强大的隐蔽型攻击框架

    AutoRDPwn v4.8:一款功能强大的隐蔽型攻击框架AutoRDPwn v4.8:一款功能强大的隐蔽型攻击框架AutoRDPwn v4.8:一款功能强大的隐蔽型攻击框架AutoRDPwn v4.8:一款功能强大的隐蔽型攻击框架

    今天给大家介绍的是一款名叫autordpwn的隐蔽型攻击框架,实际上autordpwn是一个powershell脚本,它可以实现对windows设备的自动化攻击。这个漏洞允许远程攻击者在用户毫不知情的情况下查看用户的桌面,甚至还可以通过恶意请求来实现桌面的远程控制。 环境要求 PowerShell4…

    2026年9月28日 • 用户投稿
    000
  • 快手直播带货中控台叫什么?快手直播中控台在哪里打开

    快手直播带货中控台叫什么?快手直播中控台在哪里打开快手直播带货中控台叫什么?快手直播中控台在哪里打开快手直播带货中控台叫什么?快手直播中控台在哪里打开快手直播带货中控台叫什么?快手直播中控台在哪里打开

    近年来,直播带货作为一种新兴的电商模式,受到了广泛关注。各大电商平台纷纷布局直播领域,而快手作为国内领先的短视频和直播平台,更是将直播带货推向了高潮。在一场场精彩的直播带货活动中,有一个神秘的团队,他们负责整个直播间的后台操控,确保直播过程顺利进行。快手直播带货中控台叫什么呢?今天,就让我们一起揭开…

    2026年9月28日 • 用户投稿
    200
  • 天禧携手字节扣子:AI生态再扩容,开发者与用户双向赋能

    天禧携手字节扣子:AI生态再扩容,开发者与用户双向赋能天禧携手字节扣子:AI生态再扩容,开发者与用户双向赋能天禧携手字节扣子:AI生态再扩容,开发者与用户双向赋能天禧携手字节扣子:AI生态再扩容,开发者与用户双向赋能

    9月25日,天禧个人超级智能体正式宣布与字节跳动旗下的ai智能体开发平台“扣子”建立生态合作关系。继chatexcel凭借“对话做表”功能引发广泛关注后,此次携手扣子平台,不仅是天禧在ai能力上的又一次重要拓展,更意味着联想的ai战略已迈入平台整合与生态共建的新阶段,ai生态赋能的核心价值得到显著提…

    2026年9月28日 • 用户投稿
    000
  • 格子达论文查重怎么操作_格子达官方检测系统指南

    格子达论文查重怎么操作_格子达官方检测系统指南格子达论文查重怎么操作_格子达官方检测系统指南格子达论文查重怎么操作_格子达官方检测系统指南格子达论文查重怎么操作_格子达官方检测系统指南

    首先登录格子达官网注册账号并登录,接着在个人中心上传符合格式的论文文件,填写必要信息后提交检测,最后等待系统生成报告并下载查看总相似比、AI占比等数据,结合标注内容进行修改。 格子达论文查重怎么操作?这是不少网友都关注的,接下来由PHP小编为大家带来格子达官方检测系统指南,感兴趣的网友一起随小编来瞧…

    2026年9月28日 • 用户投稿
    100
  • 格子达论文检测入口在哪里—格子达学位论文查重入口

    格子达论文检测入口在哪里—格子达学位论文查重入口格子达论文检测入口在哪里—格子达学位论文查重入口格子达论文检测入口在哪里—格子达学位论文查重入口格子达论文检测入口在哪里—格子达学位论文查重入口

    格子达论文查重入口在www.gezida.com,用户注册后可上传Word或PDF文件进行检测,系统采用语义分析算法,比对广泛学术资源,支持分段查重,生成带来源标注的PDF报告,界面简洁并提供实时进度与在线客服。 格子达论文检测入口在哪里—格子达学位论文查重入口,这是不少学生在撰写毕业论文时都关注的…

    2026年9月28日 • 用户投稿
    100
  • 牧场物语风之繁华集市自然精灵系统指南 自然精灵功能及位置

    牧场物语风之繁华集市自然精灵系统指南 自然精灵功能及位置牧场物语风之繁华集市自然精灵系统指南 自然精灵功能及位置牧场物语风之繁华集市自然精灵系统指南 自然精灵功能及位置牧场物语风之繁华集市自然精灵系统指南 自然精灵功能及位置

    《牧场物语 风之集市》中的自然精灵系统是维系农场生态平衡与促进作物成长的重要机制。在游戏第一年春季第13日上午,该系统将自动解锁,并同步开启“欢乐能量”玩法。通过“助威小队”功能,自然精灵可在集市日协助提升商品的销售表现和品质,助力玩家获得更高收益。 牧场物语风之繁华集市自然精灵系统详解 1、自然精…

    2026年9月28日 • 用户投稿
    100
  • MBTI测试免费链接入口_ MBTI免费测试网站在线地址

    MBTI测试免费链接入口_ MBTI免费测试网站在线地址MBTI测试免费链接入口_ MBTI免费测试网站在线地址MBTI测试免费链接入口_ MBTI免费测试网站在线地址MBTI测试免费链接入口_ MBTI免费测试网站在线地址

    MBTI测试免费链接入口包括www.16personalities.com和www.16mbti.cn,前者基于荣格理论提供16种人格类型分析,含职业建议;后者支持多次测试、生成多维度报告,具社交分享功能,界面简洁适配多设备,测试约12分钟完成。 MBTI测试免费链接入口在哪里?这是不少网友都关注的…

    2026年9月28日 • 用户投稿
    100
  • 如何用豆包AI生成Python环境配置代码

    如何用豆包AI生成Python环境配置代码如何用豆包AI生成Python环境配置代码如何用豆包AI生成Python环境配置代码如何用豆包AI生成Python环境配置代码

    豆包ai可辅助生成python环境配置代码。1. 首先明确项目需求,如python版本、依赖库和虚拟环境类型;2. 向豆包ai输入具体提示词,获取创建venv和requirements.txt的命令;3. 如需复杂配置,可要求生成开发与生产环境分离的依赖文件;4. 注意版本控制、输出验证及通过多轮交…

    2026年9月28日 • 用户投稿
    100
  • 视频号私信如何改成个人私信?视频号怎么私信给作者

    视频号私信如何改成个人私信?视频号怎么私信给作者视频号私信如何改成个人私信?视频号怎么私信给作者视频号私信如何改成个人私信?视频号怎么私信给作者视频号私信如何改成个人私信?视频号怎么私信给作者

    在这个信息爆炸的时代,我们每个人都希望能拥有一个属于自己的小天地,与他人分享喜怒哀乐,同时保护自己的隐私。而微信视频号私信功能的出现,无疑为我们提供了一个绝佳的沟通平台。但是,有些朋友可能发现,自己无法将视频号私信改成个人私信。别担心,今天就来教大家如何轻松切换隐私模式,让你的沟通更加私密和安全。 …

    2026年9月28日 • 用户投稿
    100
  • JPype集成Aspose.Cells:解决Java堆内存溢出错误指南

    JPype集成Aspose.Cells:解决Java堆内存溢出错误指南JPype集成Aspose.Cells:解决Java堆内存溢出错误指南JPype集成Aspose.Cells:解决Java堆内存溢出错误指南JPype集成Aspose.Cells:解决Java堆内存溢出错误指南

    当Python程序通过JPype调用Java库(如Aspose.Cells)处理大型文件时,可能遭遇java.lang.OutOfMemoryError: Java heap space。本文将详细指导如何通过在jpype.startJVM()中配置JVM的最大堆内存参数来有效解决此类问题,确保Py…

    2026年9月28日 • 用户投稿
    200
  • sublime怎么快速注释和取消注释代码_Sublime代码块注释与取消注释的快捷操作

    sublime怎么快速注释和取消注释代码_Sublime代码块注释与取消注释的快捷操作sublime怎么快速注释和取消注释代码_Sublime代码块注释与取消注释的快捷操作sublime怎么快速注释和取消注释代码_Sublime代码块注释与取消注释的快捷操作sublime怎么快速注释和取消注释代码_Sublime代码块注释与取消注释的快捷操作

    Sublime Text中行注释快捷键为Ctrl + /(Windows/Linux)或Cmd + /(macOS),用于单行或多行代码的快速注释与取消;块注释快捷键为Ctrl + Shift + / 或Cmd + Shift + /,可将选中代码块用语言特定符号包裹。 在Sublime Text中…

    2026年9月28日 • 用户投稿
    100
  • sublime怎么显示函数列表_Sublime Text快速跳转到函数或符号定义

    sublime怎么显示函数列表_Sublime Text快速跳转到函数或符号定义sublime怎么显示函数列表_Sublime Text快速跳转到函数或符号定义sublime怎么显示函数列表_Sublime Text快速跳转到函数或符号定义sublime怎么显示函数列表_Sublime Text快速跳转到函数或符号定义

    使用Ctrl+R或Cmd+R调用内置符号跳转功能,可快速定位当前文件的函数、类等定义;通过安装CTags、Symbol Browser或SublimeCodeIntel等插件,能实现跨文件跳转与更精准识别;配合LSP插件启用Goto Definition(F12),可获得类似IDE的智能跳转体验,显…

    2026年9月28日 • 用户投稿
    400
  • SQL注入防范策略解析

    登录界面如下所示: 请输入用户名: 用户名输入框,密码字段命名为 pass,类型设置为密码框。 点击登录按钮执行验证操作。 后端处理文件(check.php)的核心代码逻辑大致如下: 若查询结果为空,则判定为验证失败,需进行异常处理。 提示:登录失败,请核对所填信息。 } 统计数据库返回的结果行数。…

    2026年9月28日
    100
  • PHP连接MySQL数据库方法

    PHP连接MySQL数据库方法PHP连接MySQL数据库方法PHP连接MySQL数据库方法PHP连接MySQL数据库方法

    php是一种被广泛用于web开发的脚本语言,而mysql则是一个流行的开源关系型数据库系统。将二者结合,可以高效、灵活地搭建动态网站。下面我们将学习如何通过php连接数据库,掌握这一核心技能,为后续的开发工作奠定基础。 1、 在Web服务器的根目录下新建一个PHP文件,例如命名为testMysql.…

    2026年9月28日 • 用户投稿
    100
  • ChatExcel自定义分析流程_ChatExcel个性化分析流程创建方法

    ChatExcel自定义分析流程_ChatExcel个性化分析流程创建方法ChatExcel自定义分析流程_ChatExcel个性化分析流程创建方法ChatExcel自定义分析流程_ChatExcel个性化分析流程创建方法ChatExcel自定义分析流程_ChatExcel个性化分析流程创建方法

    答案:通过定义目标、使用自然语言或脚本创建流程、设置自动化触发及调试管理,可在ChatExcel中实现个性化数据处理。具体包括明确分析范围与规则,拆解任务;用自然语言生成指令并优化;切换脚本模式编写逻辑;绑定时间或事件触发器自动执行;最后通过调试、日志和版本控制确保流程稳定运行。 如果您希望在Cha…

    2026年9月27日 • 用户投稿
    000
  • Excel批量转换日期格式技巧

    Excel批量转换日期格式技巧Excel批量转换日期格式技巧Excel批量转换日期格式技巧Excel批量转换日期格式技巧

    1、 null 2、 选取需要调整格式的日期内容。 3、 使用鼠标选中需转换格式的日期区域,支持多区域同时选择。 4、 弹出列分割设置界面。 5、 点击菜单栏中的“数据”选项,选择“分列”,启动文本分列向导窗口。 6、 设置分列方式为固定宽度模式。 7、 勾选“固定宽度”单选按钮,然后点击“下一步”…

    2026年9月27日 • 用户投稿
    100
  • 5种方法轻松查看Word文档(方便快捷的Word文档查看技巧)

    5种方法轻松查看Word文档(方便快捷的Word文档查看技巧)5种方法轻松查看Word文档(方便快捷的Word文档查看技巧)5种方法轻松查看Word文档(方便快捷的Word文档查看技巧)5种方法轻松查看Word文档(方便快捷的Word文档查看技巧)

    在现代办公和学习中,word文档扮演着重要的角色。然而,有时我们只需要查看word文档而不是编辑它。本文将介绍五种方便快捷的方法来查看word文档,无论是在电脑、手机还是在线平台上,您都能轻松实现。 一、使用 Microsoft Word 软件打开文档 如何使用 Microsoft Word 打开和…

    2026年9月27日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信