使用PhpSpreadsheet读取和写入Excel

原创文章 作者:月光光 2018年06月07日 22:25helloweba.net 标签:PHP 

PhpSpreadsheet是一个纯PHP编写的组件库,它使用现代PHP写法,代码质量和性能比PHPExcel高不少,完全可以替代PHPExcel(PHPExcel已不再维护)。使用PhpSpreadsheet可以轻松读取和写入Excel文档,支持Excel的所有操作。

由于PHP操作Excel在我们项目开发过程中经常用到,所以我特意将PhpSpreadsheet的应用讲解分为4节内容,更加贴近我们的实际应用场景。这4节内容分别是:

本文先了解第1节内容。

软件依赖

要使用PhpSpreadsheet需要满足以下条件:

  • PHP5.6或更改版本,推荐PHP7
  • 支持php_zip扩展
  • 支持php_xml扩展
  • 支持php_gd2扩展

安装

现在开始,创建项目目录/PHPExcel,进入项目目录。

使用composer安装:

composer require phpoffice/phpspreadsheet

如何使用

在项目目录下新建/public目录,在public目录下创建示例文件test.php,编辑test.php,用以下代码。

<?php

require '../vendor/autoload.php';

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

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Welcome to Helloweba.');

$writer = new Xlsx($spreadsheet);
$writer->save('hello.xlsx');

运行代码,你会发现在目录下生成一个hello.xlsx文件,打开Excel文件,你会看到Excel中的单元格A1中有“Welcome to Helloweba.”内容。当然你可以对单元格样式诸如颜色、背景、宽度、字体等等进行设置,这些会在接下来的几节中讲到。

PhpSpreadsheet特性

支持读取.xls,.xlsx,.html,.csv等格式文件,支持写入导出.xls,.xlsx,.html,.csv,.pdf格式文件。

提供丰富的API,提供单元格样式设置、Excel表格属性设置、图表设置等等诸多功能。使用PhpSpreadsheet完全可以生成一个外观结构都满足你的Excel表格文件。

卓越的性能,尤其在PHP7上表现优异,比PHPExcel强大很多。

声明:本文为原创文章,helloweba.net和作者拥有版权,如需转载,请注明来源于helloweba.net并保留原文链接:https://www.helloweba.net/php/561.html

7条评论

  • 笨笨

    加载文件时显示乱码呀

  • 琨北北

    如果excel文件设置了筛选,该怎么读取这个excel文件

  • Solid

    确定性能好很多?PHPExcel里有的bug,这里一个没少,反而原本1分钟加载出来的文件,这里要3分钟

  • 王兴宇

    我用的是 xampp
    composer require phpoffice/phpspreadsheet
    之后没有看到 /vendor/autoload.php 文件
    请问默认文件会到哪里?

  • 轻狂小生

    @月光光 为什么我用读取url $spreadsheet = $reader->load('http://pcilpjnot.bkt.clouddn.com/car/execel_3ab8b717eb783080a9d48.xlsx'); //载入excel表格
    会报错InvalidArgumentException in File.php line 137:
    File 'http://pcilpjnot.bkt.clouddn.com/car/execel_3ab8b717eb783080a9d48.xlsx' does not exist.

    月光光 回复: 你把xlsx文件下载到本地测试下。
  • 臣附议

    https://www.helloweba.net/php/171.html 使用PHP导入和导出CSV文件,这篇文章写的挺好的。

  • じ歡ツ

    请问PhpSpreadsheet读取csv文件怎么实现,我在phpexcel上完全正常的功能迁移到PhpSpreadsheet后要改的地方好多,而且读取不了csv文件

    月光光 回复: $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv(); $spreadsheet = $reader->load("sample.csv");