PHP 如何使用 Excel 处理数据

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 OSS,内容安全 1000 次 1年
简介: 【1月更文挑战第1天】PHP 如何使用 Excel 处理数据

场景

业务功能单据在已有添加、编辑功能的基础上,业务想增加使用 Excel 导入,同时将导入的结果使用原表的格式再返回给用户。

准备

  • laravel
  • OSS
  • RDS MySQL

方案

  1. 用户通过 Web 页面上传 Excel 数据源。
  2. Web Server 收到请求后,将 Excel 上传至 OSS,并同时发 MQ 消息通知异步服务器。
  3. 异步服务器收到消息后从 OSS 下载 Excel,并根据业务逻辑处理数据。
  4. 异步服务器将数据存储至数据库。
  5. 异步服务器将处理结果写至 Excel,并将该结果上传至 OSS 后将文件下载链接发送给用户。

步骤

以下为 Excel 处理的主要步骤代码:

  1. 安装 Excel 插件
composer require phpoffice/phpexcel
  1. 下载 OSS 文件
//下载文件到本地
$$fileDownloadUrl = "文件下载链接,可以通过 MQ 消息获得";
$destinationFolder = 'storage/downloads/';
//这里的文件后缀可根据下载链接来进行处理
$newFname = $destinationFolder .time().'.xlsx';
$file = fopen ($fileDownloadUrl, "rb");
if ($file) {
    $newf = fopen($newFname, "wb");
    if ($newf){
        while(!feof($file)) {
            fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
        }
    }
}
if ($file) {
    fclose($file);
}
if ($newf) {
    fclose($newf);
}
  1. 读取 Excel 内容
//从excel读取数据
$filePath = "上一步骤中下载的本地文件的地址";
$PHPExcel = new \PHPExcel_Reader_Excel2007();
try {
    if (!$PHPExcel->canRead($filePath)) {
        //默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
        $PHPExcel = new \PHPExcel_Reader_Excel5();
    }
    $PHPExcel->setReadDataOnly(true);  //过滤excel中的特殊字符
    $excel = $PHPExcel->load($filePath);//加载excel
    //读取excel文件中的第一个工作表
    $data = $excel->getSheet(0)->toArray();
} catch (\Exception $e) {
    echo 'excel read error'.$e->getMessage();
}
  1. 导出 Excel
ini_set('memory_limit', '-1'); 
//文件保存的路径
$filePath = "storage/downloads/".time().".xlsx";
$objPHPExcel = new \PHPExcel();
$titles = ["姓名","性别","生日","学历"];
$dataList = [
    ["张三","男","1995-01-01","本科"],
    ["张四","男","1995-01-02","本科"],
    ["张五","男","1995-01-03","本科"],
    ["张六","男","1995-01-04","本科"],
    ["张七","男","1995-01-05","本科"],
    ["张八","男","1995-01-06","本科"],
];
// 设置列宽
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
//设置第一行为标题
foreach ($titles as $curColumn => $curValue) {
    $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValueByColumnAndRow($curColumn, 1,$curValue);
}
//设置数据内容
foreach ($dataList as $curRow => $curValueList) {
    $curRow = $curRow+2;
    foreach ($curValueList as $curColumn => $curValue) {
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValueByColumnAndRow($curColumn, $curRow,$curValue);
    }
}
$objPHPExcel->getActiveSheet()->setTitle('人员'); // sheet 名
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filePath);
exit;
相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
打赏
10
0
1
0
124
分享
相关文章
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
118 67
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
1112 10
网安工程师必看!AiPy解决fscan扫描数据整理难题—多种信息快速分拣+Excel结构化存储方案
作为一名安全测试工程师,分析fscan扫描结果曾是繁琐的手动活:从海量日志中提取开放端口、漏洞信息和主机数据,耗时又易错。但现在,借助AiPy开发的GUI解析工具,只需喝杯奶茶的时间,即可将[PORT]、[SERVICE]、[VULN]、[HOST]等关键信息智能分类,并生成三份清晰的Excel报表。告别手动整理,大幅提升效率!在安全行业,工具党正碾压手动党。掌握AiPy,把时间留给真正的攻防实战!官网链接:https://www.aipyaipy.com,解锁更多用法!
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
本文分析了YashanDB中PHP通过ODBC查询数据时出现的数据截断问题,表现为超过256字节的数据被截断,以及isql工具无法显示超过300字节长度的数据。问题根源在于YashanDB的ODBC驱动仅支持单次查询,且PHP扩展库默认缓冲区限制。解决方案包括改用PHP ODBC扩展库而非PDO_ODBC,以及调整isql代码逻辑以支持循环取数或一次性读取完整数据。文章还提供了具体代码示例和规避方法,适用于23.2.4.14及更早版本。
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
从Excel到Hadoop:数据规模的进化之路
从Excel到Hadoop:数据规模的进化之路
91 10
【YashanDB 知识库】php 查询超过 256 长度字符串,数据被截断的问题
php 查询超过 256 字节数据,显示被截断:yashandb 的 odbc 驱动接口 SQLGetData 现在只支持单次查询,不支持多次取数据的操作。 isql 显示不出来,isql 工具最大只查询 300 长度的数据,超过了该长度未正常显示。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
169 3
如何通过PHP爬虫模拟表单提交,抓取隐藏数据

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问