kherge/excel

此包已被废弃,不再维护。作者建议使用 phpoffice/phpspreadsheet 包。

读取非常大的 Excel (.xlsx) 工作簿文件。

dev-master / 1.x-dev 2017-01-05 02:11 UTC

This package is auto-updated.

Last update: 2021-12-07 01:39:26 UTC


README

Build Status Packagist Packagist Pre Release

Excel

读取非常大的 Excel (.xlsx) 工作簿文件。

用法

<?php

use KHerGe\Excel\Workbook;

// Open a workbook file.
$workbook = new Workbook('/path/to/workbook.xlsx');

// Show list of worksheets.
print_r($workbook->listWorksheets());

// Get a specific worksheet by index.
$worksheet = $workbook->getWorksheetByIndex(123);

// Get a specific worksheet by name.
$worksheet = $workbook->getWorksheetByName('Example');

// Iterate through all worksheets.
foreach ($workbook->iterateWorksheets() as $index => $worksheet) {
    // ...
}

// Iterate through all rows in a worksheet.
foreach ($worksheet->iterateRows() as $row => $values) {
    foreach ($values as $column => $value) {
        echo $column, $row, ' = ', $value, "\n"; // A1 = example
    }
}

// Get a specific cell.
$value = $worksheet->getCell('C', 3);

// Get a specific row.
$row = $worksheet->getRow(123);

性能

指标待定。

我确定的是,这个库将读取任何大小的电子表格,同时使用少于 2 MiB 的 RAM。但是读取电子表格的过程非常占用 CPU。

要求

  • PHP 5.6+
    • pdo_sqlite
    • zip

安装

composer require kherge/excel

文档

您直接使用的只有两个类。

工作簿

KHerGe\Excel\Workbook 类提供了对工作簿中工作表的访问。

您通过提供工作簿文件的路径作为其唯一参数来实例化此类。

<?php

$workbook = new KHerGe\Excel\Workbook('/path/to/example.xlsx');
方法 签名 描述
countWorksheets () -> int 计算工作簿中的工作表数量。
hasWorksheetByIndex (int) -> bool 检查给定索引的工作表是否存在于工作簿中。
hasWorksheetByName (str) -> bool 检查给定名称的工作表是否存在于工作簿中。
getWorksheetByIndex (int) -> Worksheet 通过索引检索工作表。
getWorksheetByName (str) -> Worksheet 通过名称检索工作表。
iterateWorksheets () -> yield<int, Worksheet> 为工作簿中的每个工作表生成。键是工作表的索引,值是 Worksheet 实例。
listWorksheets () -> map<int, str> 获取工作簿中的工作表列表。键是工作表的索引,值是名称。

工作表

KHerGe\Excel\Worksheet 类提供了对工作簿中单个工作表内容的访问。此类的实例仅由 Workbook 类使用 getWorksheet* 之一返回。

方法 签名 描述
countColumns () -> int 计算工作表中的列数。
countRows () -> int 计算工作表中的行数。
getCell (str, int) -> mixed 获取特定单元格的值。第一个参数是列名,第二个是行号。
getIndex () -> int 获取工作表的索引。
getName () -> str 获取工作表的名称。
getRow (int) -> array<mixed> 获取特定行的所有值。它的唯一参数是行号。
hasCell (str, int) -> bool 检查特定单元格是否存在于工作表中。第一个参数是列名,第二个参数是行号。
hasColumn (str) -> bool 检查列是否存在于工作表中。它的唯一参数是列名。
hasRow (int) -> bool 检查行是否存在于工作表中。它的唯一参数是行号。
iterateColumn (str) -> yield<int, mixed> 生成指定列中的每个值。它的唯一参数是列名。键是行号,值是单元格的值。
iterateRows () -> yield<int, map<str, mixed>> 生成工作表中的每一行。键是行号,值是每列值的数组。

许可证

本库以MIT和Apache 2.0许可证发布。