如何使用 PHPExcel 下载 Excel 文件:简单易懂的实操

        
                
          发布时间:2026-06-13 04:36:26

          一、什么是 PHPExcel?

          说到 PHPExcel,很多做 PHP 开发的小伙伴们应该不陌生吧!这玩意儿是一个非常强大的类库,它专门用来处理 Excel 文件。无论是生成新的 Excel 表格,还是读取已有的文件,都可以轻松搞定。不过要注意,PHPExcel 目前已经不再更新,大家可以考虑使用它的继承者 PhpSpreadsheet。不过今天咱们还是聊聊 PHPExcel,毕竟很多项目还在用它。

          二、为什么要用 PHPExcel 下载 Excel 文件?

          用 PHPExcel 可以让你的数据导出变得简单又高效。有些项目需要把后台的数据导出成 Excel 文件,方便用户查看和分析数据。你想想,整天在网页上看着一堆数据,眼睛都快花了,还是 Excel 整理起来顺手啊!而且,Excel 的操作大家都比较熟悉,一点上手就会。

          三、准备工作!下载 PHPExcel

          首先,咱们得下载安装 PHPExcel。可以直接在 GitHub 上找到它的源代码,或者通过 Composer 安装。如果你还不熟悉 Composer,没关系,我来带你一步步走。

          如果你用了 Composer,打开命令行工具,定位到你的项目目录,输入下面这行命令:

          composer require phpoffice/phpexcel

          这样,PHPExcel 就会自动下载并加入到你的项目中了。你甚至不用手动去下载,简直太方便了!

          四、基本用法:生成 Excel 文件

          有了 PHPExcel,下载 Excel 文件就简单多了。在这个例子中,我们来生成一个 Excel 文件,然后让用户下载。

          require 'vendor/autoload.php'; // 引入 Composer 的自动加载文件
          
          use PHPExcel; // 使用 PHPExcel
          
          // 创建新的 PHPExcel 对象
          $objPHPExcel = new PHPExcel();
          
          // 设置文档属性
          $objPHPExcel->getProperties()->setCreator("你的名字")
                                       ->setLastModifiedBy("你的名字")
                                       ->setTitle("测试 Excel 文档")
                                       ->setSubject("测试 Excel 文档")
                                       ->setDescription("一个测试的 Excel 文件")
                                       ->setKeywords("excel php")
                                       ->setCategory("测试");
          
          // 添加数据
          $objPHPExcel->setActiveSheetIndex(0)
                      ->setCellValue('A1', '姓名')
                      ->setCellValue('B1', '年龄')
                      ->setCellValue('A2', '小明')
                      ->setCellValue('B2', '18')
                      ->setCellValue('A3', '小红')
                      ->setCellValue('B3', '20');
          
          // 重命名工作表
          $objPHPExcel->getActiveSheet()->setTitle('学生信息');
          
          // 设置活动工作表为第一个工作表
          $objPHPExcel->setActiveSheetIndex(0);
          
          // 输出到浏览器
          header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
          header('Content-Disposition: attachment;filename="学生信息.xlsx"');
          header('Cache-Control: max-age=0');
          
          $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
          $objWriter->save('php://output');
          exit;
          

          这段代码做了什么呢?简单说,就是新建一个 Excel 文件,然后设置了一点基本信息,接着添加了一些数据,最后通过 HTTP 头部输出给用户进行下载。

          五、处理下载过程中的一些小技巧

          在实际项目中,下载 Excel 文件的时候,可能会遇到很多奇怪的问题。比如,有的人下载下来的文件打不开,或者文件名不对。这里我给你几个小技巧,能省很多麻烦。

          • 文件编码:确保你输出的文件是 UTF-8 编码,如果出现乱码,可以尝试在设置内容时加上适当的设置。
          • 文件名:在 header 中设置文件名时,最好用 URL 编码,避免特殊字符导致的问题。可以用 rawurlencode($filename) 来处理。
          • 内存导出大文件时可能会导致内存溢出,可以在导出之前设置 ini_set('memory_limit', '512M'); 来增加内存限制。

          六、如果要读取 Excel 文件该怎么做?

          说到下载,当然也少不了读取。PHPExcel 除了生成 Excel 外,读取也是它的一项强项。假设你有一个 Excel 文件,希望提取里面的数据。演示给你看下如何读取吧:

          require 'vendor/autoload.php';
          
          use PHPExcel_IOFactory;
          
          // 读取 Excel 文件
          $objPHPExcel = PHPExcel_IOFactory::load("学生信息.xlsx");
          
          // 获取第一个工作表
          $sheet = $objPHPExcel->getActiveSheet();
          
          // 获取 A 列的所有数据
          $data = $sheet->getCell('A1')->getValue();
          echo $data; // 输出到浏览器
          

          这段代码简单明了,加载了 Excel 文件,提取了 A1 单元格的内容。想要提取更多数据,只需要更改单元格的坐标就好。这样一来,处理 Excel 数据的灵活性就大大增加了。

          七、使用 PHPExcel 的一些小技巧和常见问题

          在使用 PHPExcel 过程中,难免有些坑。这儿列出几条,帮你避雷:

          • 调试时要清空缓存:有时候调试代码的时候,文件内容可能会缓存,要记得加上 ob_end_clean(); 来清空输出缓存。
          • 多工作表处理:如果需要生成多个工作表可以使用 addSheet() 方法,操作过程跟读取单元格差不多。
          • 合并单元格:mergeCells('A1:B1') 可以合并单元格,和 Excel 操作差不多。

          八、总结与分享

          通过这个简单的教程,相信你对 PHPExcel 下载和处理 Excel 文件有了基础的认识。虽然 PHPExcel 现在不再更新了,但对于一些小项目来说,它依旧能发挥它的威力。当然,如果条件允许,可以考虑转向 PhpSpreadsheet,它功能更强大且更新频繁。

          在开发中,我有不少朋友都会遇到各种各样的问题,特别是在文件输出和格式处理上,稍微不注意就出错,大家一定要留神哈!如果有不明白的地方,来问我,我们一起解决。

          希望这篇文章能够帮助到你,在实际操作中,如果有什么问题,欢迎和我交流,咱们一起进步!

          分享 :
                    author

                    tpwallet

                    TokenPocket是全球最大的数字货币钱包,支持包括BTC, ETH, BSC, TRON, Aptos, Polygon, Solana, OKExChain, Polkadot, Kusama, EOS等在内的所有主流公链及Layer 2,已为全球近千万用户提供可信赖的数字货币资产管理服务,也是当前DeFi用户必备的工具钱包。

                              相关新闻

                              TP最新版本转回OKEx的简单
                              2026-05-23
                              TP最新版本转回OKEx的简单

                              引言:为什么要把币转回OKEx? 哎,最近手上攥着一些数字货币,想着把它们转回我的OKEx账户。说实话,这个过程一...

                              如何轻松取消TP最新版本中
                              2026-05-23
                              如何轻松取消TP最新版本中

                              大家好,今天咱们聊聊TP最新版本的交易取消 最近,朋友们都在问我,TP最新版本的交易怎么取消?这事儿看似简单,...

                              快速上手:TP官方下载老版
                              2026-05-08
                              快速上手:TP官方下载老版

                              什么是TP官方下载? 大家好!今天我想跟你们聊聊一个跟加密货币有关的话题,那就是TP官方下载,尤其是它的老版本...

                              tp卖币赚的钱违法吗?解读
                              2026-06-05
                              tp卖币赚的钱违法吗?解读

                              虚拟币的热潮与tp交易 最近,“tp”这种币在圈子里炒得火热。你知道吗?各种各样的虚拟货币像雨后春笋一样冒出来...