惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
Docker
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Project Zero
Project Zero
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Scott Helme
Scott Helme
A
About on SuperTechFans
WordPress大学
WordPress大学
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
G
GRAHAM CLULEY
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

流星小屋

自用好看的404页面 - 流星小屋 【原创程序】文件批量打印助手 - 流星小屋 飞鸟加速器破解版教程带成品 - 流星小屋 习讯云实习周报、月报一键生成工具 - 流星小屋 一键扒取苹果cms系统所有m3u8直链api源码 - 流星小屋 分享自己最近几天无聊写的两个项目 - 流星小屋 【原创源码】卡密提货带后台 - 流星小屋 【原创】日常和朋友搞抽象答题网页源码 - 流星小屋 宝塔API全自动建站系统源码 - 流星小屋
使用PHPExcel库实现Excel文件读写教程 - 流星小屋
作者: ◇流星雨﹏√ · 2025-10-01 · via 流星小屋

这篇文章距离最后更新已过255 天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

现在工作之后就没怎么登过博客了,最近在着力于开发一款混凝土试件数字化管理系统,而提到混凝土当然离不开台账(我们的台账都是excel表格文件),开发语言为PHP,所以在开发时自然离不开使用使用PHP进行Excel文件的读写,尝试了很多方法函数之后我觉得PHPExcel-1.8更适合我的开发使用,这里记录一下PHPExcel库的教程吧!

PHPExcel 库(其继任者为 PhpSpreadsheet)为 PHP 操作 Excel 文件提供了强大功能。

安装与准备

首先,需要通过 Composer 将 PhpSpreadsheet 引入项目中:

composer require phpoffice/phpspreadsheet

然后在PHP脚本开头引入自动加载文件:

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;

写入Excel文件

创建并写入一个 Excel 文件通常包含以下几个步骤:

// 1. 创建 Spreadsheet 对象
$spreadsheet = new Spreadsheet();

// 2. 获取当前活动的工作表(默认第一个)
$sheet = $spreadsheet->getActiveSheet();

// 3. 向单元格写入数据
$sheet->setCellValue('A1', 'Hello');
$sheet->setCellValue('B1', 'World!');
$sheet->setCellValue('A2', 123.456);
$sheet->setCellValue('B2', '=A2*2'); // 甚至可以写入公式

// 4. 通过数组批量写入数据
$dataArray = [
    ['姓名', '年龄', '城市'],
    ['张三', 25, '北京'],
    ['李四', 30, '上海']
];
$sheet->fromArray($dataArray, NULL, 'A4'); // 从 A4 单元格开始填充

// 5. 保存文件
$writer = new Xlsx($spreadsheet);
$writer->save('hello_world.xlsx');

echo "Excel 文件已成功创建!";

读取Excel文件

读取一个已存在的 Excel 文件,并提取其中的信息:

// 1. 指定文件路径
$inputFileName = 'hello_world.xlsx';

// 2. 使用 IOFactory 来加载文件
$spreadsheet = IOFactory::load($inputFileName);

// 3. 获取活动工作表
$sheet = $spreadsheet->getActiveSheet();

// 4. 读取单个单元格的值
$cellA1 = $sheet->getCell('A1')->getValue();
echo "A1 单元格的值是: " . $cellA1 . "\n";

// 5. 获取工作表的基本信息
$highestRow = $sheet->getHighestRow(); // 最后有数据的行号
$highestColumn = $sheet->getHighestColumn(); // 最后有数据的列标

// 6. 循环遍历所有包含数据的行和列
echo "工作表数据内容:\n";
for ($row = 1; $row <= $highestRow; $row++) {
    for ($col = 'A'; $col <= $highestColumn; $col++) {
        $cellValue = $sheet->getCell($col . $row)->getValue();
        echo $cellValue . "\t";
    }
    echo "\n";
}

处理大文件与更多技巧

  1. 处理大Excel文件:
    使用 setReadDataOnly(true) 可以只读取数据而不加载格式信息,显著降低内存消耗。对于非常大的文件,还可以使用分块读取的技巧。

    $reader = IOFactory::createReaderForFile($inputFileName);
    $reader->setReadDataOnly(true);
    $spreadsheet = $reader->load($inputFileName);
  2. 设置单元格格式:
    你不仅可以读写数据,还可以设置丰富的格式。

    use PhpOffice\PhpSpreadsheet\Style\Alignment;
    use PhpOffice\PhpSpreadsheet\Style\Font;
    
    // 设置字体和加粗
    $sheet->getStyle('A1')->getFont()->setBold(true)->setSize(12);
    
    // 设置单元格居中对齐
    $sheet->getStyle('A1:B1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自流星小屋