官方文档:http://opensource.box.com/spout/

支持的电子表格类型

Spout 支持三种类型的电子表格:XLSX、ODS 和 CSV。
Spout 提供简单而统一的 API 来读取或创建不同类型的电子表格。电子表格类型的转换也是令人惊异的简单。

快速,可扩展

读取小型 CSV 文件?没问题!
读取大型 XLSX 文件?无需额外的代码!
写入百万级 ODS 文件?Spout 可以立即实现!

为何使用 Spout ?

  • Spout 能胜任处理任意尺寸文件的任务
  • Spout 仅需 3MB 内存即能处理任意文件
  • Spout 的流机制使其难以置信地快
  • Spout 的 API 面向开发者非常友好

开始使用

本指南用于指导你安装和使用 Spout。

环境要求

  • PHP 5.4.0 以上
  • PHP 扩展 php_zip
  • PHP 扩展 php_xmlreader

安装

Composer (推荐)

$ composer require box/spout

手动安装

首先确保你的系统符合前文提到的环境要求
  • 从 Releases 页面下载源代码
  • 将下载的内容解压到你的项目中
  • 将下面的代码添加到顶级控制器(例如 index.php)或者任意适当位置:

    // don't forget to change the path!
    require_once '[PATH/TO]/src/Spout/Autoloader/autoload.php';

基础用法

读取

不管什么文件类型,读取文件的接口都是一样的:

use Box\Spout\Reader\ReaderFactory;
use Box\Spout\Common\Type;

$reader = ReaderFactory::create(Type::XLSX); // for XLSX files
//$reader = ReaderFactory::create(Type::CSV); // for CSV files
//$reader = ReaderFactory::create(Type::ODS); // for ODS files

$reader->open($filePath);

foreach ($reader->getSheetIterator() as $sheet) {
    foreach ($sheet->getRowIterator() as $row) {
        // do stuff with the row
    }
}

$reader->close();

如果文件里存在多个表,读取器会循序地读取全部表。

写入

类似读取器,将数据写入文件也有通用的接口:

use Box\Spout\Writer\WriterFactory;
use Box\Spout\Common\Type;

$writer = WriterFactory::create(Type::XLSX); // for XLSX files
//$writer = WriterFactory::create(Type::CSV); // for CSV files
//$writer = WriterFactory::create(Type::ODS); // for ODS files

$writer->openToFile($filePath); // write data to a file or to a PHP stream
//$writer->openToBrowser($fileName); // stream data directly to the browser

$writer->addRow($singleRow); // add a row at a time
$writer->addRows($multipleRows); // add multiple rows at a time

$writer->close();

对于 XLSX 和 ODS 文件,每个表的行数上线是 1,048,576。默认地,一旦达到限制行数,写入器会自动创建一个新表再继续写入数据。

高级用法

你可以使用 Spout 做更多事情!查看完整文档了解全部功能。

标签: none