PHP 如何使用 Excel 处理数据

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 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,搭建一个在线教育视频课程分享网站。
相关文章
|
1月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
3月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
44 0
|
9天前
|
关系型数据库 MySQL 数据库连接
13 PHP数据的获取
路老师在知乎上分享了PHP语言的知识,帮助大家入门和深入理解PHP。本文介绍了从结果集中获取一行数据作为对象(`mysqli_fetch_object()`)、获取一行作为枚举数组(`mysqli_fetch_row()`)、获取查询结果集中的记录数(`mysqli_num_rows()`)、释放内存(`mysqli_free_result()`)以及关闭数据库连接(`mysqli_close()`)的方法,并提供了具体示例代码。
22 3
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
49 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
16天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
1月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
数据采集 存储 数据挖掘
使用Python读取Excel数据
本文介绍了如何使用Python的`pandas`库读取和操作Excel文件。首先,需要安装`pandas`和`openpyxl`库。接着,通过`read_excel`函数读取Excel数据,并展示了读取特定工作表、查看数据以及计算平均值等操作。此外,还介绍了选择特定列、筛选数据和数据清洗等常用操作。`pandas`是一个强大且易用的工具,适用于日常数据处理工作。
|
3月前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
|
3月前
|
存储 Java Apache
|
3月前
|
数据可视化 Python
我是如何把python获取到的数据写入Excel的?
我是如何把python获取到的数据写入Excel的?
48 2