tianhe1986 / fatexcel
excel fast import/export for huge datas
1.1
2018-02-11 08:34 UTC
Requires
- php: >=5.5
- mk-j/php_xlsxwriter: ^0.37.0
Requires (Dev)
- phpunit/phpunit: >=4.8.0
This package is auto-updated.
Last update: 2025-02-26 20:32:14 UTC
README
phpexcel / phpspreadsheet的功能非常全面,可对单元格进行各式各样的操作。 然而,它的缺点是,占用内存大,处理速度慢。在数据量小的时候可能没有影响,但是对于大数据量(例如10万+行),导入和导出花费的时间就会非常长。
为了解决这个问题,FatExcel基于其他的第三方开源类库,简单封装了大数据导入导出的方法。但是使用是有一定限制的,在后面会详细阐述。
安装
确保PHP版本在5.5以上。
推荐通过Composer进行安装
Composer的安装请参考官方配置。
安装好Composer后,在你的项目中创建一个 composer.json 文件:
{ "require": { "tianhe1986/fatexcel": "*" } }
然后在项目文件夹下执行:
$ composer install
之后添加autoloader:
<?php require "vendor/autoload.php";
导入
FatExcel类提供了importToArray
方法,基于spreadsheet-reader封装,将excel文件直接导入为二维数组,使用方法如下:
use FatExcel\FatExcel; $fatExcel = new FatExcel(); $data = $fatExcel->importToArray('/path/to/excel');
要使用该方法,对应的excel文件需要满足的条件是:
- 文件为xlsx格式(扩展名为.xlsx)
- 只有一个工作表(todo:支持多个工作表)
- 表格数据从A1开始,每行及每列单元格数量相同(没有单元格合并)
导出
与导入相对的,是从二维数组直接导出成excel,基于PHP_XLSXWriter封装。使用方法如下:
use FatExcel\FatExcel; $fatExcel = new FatExcel(); $data = [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10] ]; //导出到文件 $fatExcel->exportToFile($data, '/path/to/excel'); //直接下载 $excel->exportDownload($data, '666.xlsx');
对于单元格有格式要求的,可以通过表头数组进行设置,如下:
use FatExcel\FatExcel; $fatExcel = new FatExcel(); $header = [ 'created' => 'date', 'product_id' => 'integer', 'quantity' => '#,##0', 'amount' => 'price', 'total' => '0.00E+00', 'code' => 'string', 'tax' => '[$$-1009]#,##0.00;[RED]-[$$-1009]#,##0.00', ]; $data = [ ['2015-01-01', 873, 1, '44.00', 99909, '12345678900000000', '=D2*0.05'], ['2015-01-12', 324, 2, '88.00', 10000, '12345678911111111','=D3*0.05'], ]; //导出到文件 $fatExcel->exportToFile($data, '/path/to/excel', $header); //直接下载 $fatExcel->exportDownload($data, '开不了机让她知道.xlsx', $header);
对于$header
数组的每项key和value,key将作为表头写入表格,此列的其他单元格将按照value定义的格式进行写入。
导出的注意事项为:
- 导出文件为xlsx格式。
- 不支持设置样式。
- 不支持单元格合并。