mahmud/sheet
Composer 安装命令:
composer require mahmud/sheet
包简介
Excel and CSV file reader
README 文档
README
A clean and beautiful API to read Excel/CSV sheet. This is a wrapper around box/spout package.
Installation
composer require mahmud/sheet
Requirements
- php: ^7.1.3
- box/spout: ^3.0
Usage
Simple Example
Let's assume we have a csv file like this.
| ID | Name | Age |
|---|---|---|
| 1 | Mahmud | 27 |
| 2 | Mohor | 26 |
| 3 | Ayman | 1 |
use Mahmud\Sheet\SheetReader; SheetReader::makeFromCsv('/path-to-csv-file/example-file.csv') ->delimiter(",") // Optional: You can set delimiter for CSV file ->ignoreRow(0) // Optional: Skip the header row ->columns(['id', 'name', 'age']) // Arbitary column name that will be mapped sequentially for each row ->onEachRow(function($row, $index){ // This callback will be executed for each row var_dump($row); // Current row in associative array var_dump($index); // Current index of the row })->read();
Middleware
You can modify data of each row with middleware. See the following example
use Mahmud\Sheet\SheetReader; SheetReader::makeFromCsv('/path-to-csv-file/example-file.csv') ->delimiter(",") ->ignoreRow(0) ->columns(['id', 'name', 'age']) ->applyMiddleware(function($row, $index){ $row['age'] = $row['age'] . " Years"; return $row; }) ->onEachRow(function($row, $index){ var_dump($row); })->read();
Another example using class as middleware
class AgeMiddleware{ public function handle($row, $index) { $row['age'] = $row['age'] . " Years"; return $row; } } SheetReader::makeFromCsv('/path-to-csv-file/example-file.csv') ->delimiter(",") ->ignoreRow(0) ->columns(['id', 'name', 'age']) ->applyMiddleware(new AgeMiddleware) ->onEachRow(function($row, $index){ var_dump($row); })->read();
Also you can pass array of middlewares
SheetReader::makeFromCsv('/path-to-csv-file/example-file.csv') ->delimiter(",") ->ignoreRow(0) ->columns(['id', 'name', 'age']) ->applyMiddleware([ new AgeMiddleware, new AnotherMiddleware, ]) ->onEachRow(function($row, $index){ var_dump($row); })->read();
If you return null from middleware, That row will be skipped and won't pass to onEachRow handler.
SheetReader::makeFromCsv('/path-to-csv-file/example-file.csv') ->delimiter(",") ->ignoreRow(0) ->columns(['id', 'name', 'age']) ->applyMiddleware(function($row){ if($row['id'] == 1){ return null; } return $row; }) ->onEachRow(function($row, $index){ var_dump($row); })->read();
Count total rows
$total = SheetReader::makeFromCsv('/path-to-csv-file/example-file.csv') ->totalRows(); var_dump($total); // 4
mahmud/sheet 适用场景与选型建议
mahmud/sheet 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 134 次下载、GitHub Stars 达 30, 最近一次更新时间为 2019 年 12 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「excel」 「csv」 「sheet」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 mahmud/sheet 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 mahmud/sheet 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 mahmud/sheet 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
This Symfony bundle integrates PhpSpreadsheet into Symfony using Twig.
PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
Yii2 export extension
PHP Excel Library
laravel facade to read/write csv file
PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine
统计信息
- 总下载量: 134
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 30
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-12-06