当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

fast-excel

🦉 Fast Excel import/export for Laravel
授权协议 MIT License
开发语言 PHP
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 龙浩博
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Fast Excel import/export for Laravel, thanks to Spout.See benchmarks below.

Quick start

Install via composer:

composer require rap2hpoutre/fast-excel

Export a Model to .xlsx file:

use Rap2hpoutre\FastExcel\FastExcel;
use App\User;

// Load users
$users = User::all();

// Export all users
(new FastExcel($users))->export('file.xlsx');

Export

Export a Model or a Collection:

$list = collect([
    [ 'id' => 1, 'name' => 'Jane' ],
    [ 'id' => 2, 'name' => 'John' ],
]);

(new FastExcel($list))->export('file.xlsx');

Export xlsx, ods and csv:

$invoices = App\Invoice::orderBy('created_at', 'DESC')->get();
(new FastExcel($invoices))->export('invoices.csv');

Export only some attributes specifying columns names:

(new FastExcel(User::all()))->export('users.csv', function ($user) {
    return [
        'Email' => $user->email,
        'First Name' => $user->firstname,
        'Last Name' => strtoupper($user->lastname),
    ];
});

Download (from a controller method):

return (new FastExcel(User::all()))->download('file.xlsx');

Import

import returns a Collection:

$collection = (new FastExcel)->import('file.xlsx');

Import a csv with specific delimiter, enclosure characters and "gbk" encoding:

$collection = (new FastExcel)->configureCsv(';', '#', 'gbk')->import('file.csv');

Import and insert to database:

$users = (new FastExcel)->import('file.xlsx', function ($line) {
    return User::create([
        'name' => $line['Name'],
        'email' => $line['Email']
    ]);
});

Facades

You may use FastExcel with the optional Facade. Add the following line to config/app.php under the aliases key.

'FastExcel' => Rap2hpoutre\FastExcel\Facades\FastExcel::class,

Using the Facade, you will not have access to the constructor. You may set your export data using the data method.

$list = collect([
    [ 'id' => 1, 'name' => 'Jane' ],
    [ 'id' => 2, 'name' => 'John' ],
]);

FastExcel::data($list)->export('file.xlsx');

Global helper

FastExcel provides a convenient global helper to quickly instantiate the FastExcel class anywhere in a Laravel application.

$collection = fastexcel()->import('file.xlsx');
fastexcel($collection)->export('file.xlsx');

Advanced usage

Export multiple sheets

Export multiple sheets by creating a SheetCollection:

$sheets = new SheetCollection([
    User::all(),
    Project::all()
]);
(new FastExcel($sheets))->export('file.xlsx');

Use index to specify sheet name:

$sheets = new SheetCollection([
    'Users' => User::all(),
    'Second sheet' => Project::all()
]);

Import multiple sheets

Import multiple sheets by using importSheets:

$sheets = (new FastExcel)->importSheets('file.xlsx');

You can also import a specific sheet by its number:

$users = (new FastExcel)->sheet(3)->import('file.xlsx');

Export large collections with chunk

Export rows one by one to avoid memory_limit issues using yield:

function usersGenerator() {
    foreach (User::cursor() as $user) {
        yield $user;
    }
}

// Export consumes only a few MB, even with 10M+ rows.
(new FastExcel(usersGenerator()))->export('test.xlsx');

Add header and rows style

Add header and rows style with headerStyle and rowsStyle methods.

$header_style = (new StyleBuilder())->setFontBold()->build();

$rows_style = (new StyleBuilder())
    ->setFontSize(15)
    ->setShouldWrapText()
    ->setBackgroundColor("EDEDED")
    ->build();

return (new FastExcel($list))
    ->headerStyle($header_style)
    ->rowsStyle($rows_style)
    ->download('file.xlsx');

Why?

FastExcel is intended at being Laravel-flavoured Spout:a simple, but elegant wrapper around Spout with the goalof simplifying imports and exports. It could be considered as a faster (and memory friendly) alternativeto Laravel Excel, with less features.Use it only for simple tasks.

Benchmarks

Tested on a MacBook Pro 2015 2,7 GHz Intel Core i5 16 Go 1867 MHz DDR3.Testing a XLSX export for 10000 lines, 20 columns with random data, 10 iterations, 2018-04-05. Don't trust benchmarks.

Average memory peak usage Execution time
Laravel Excel 123.56 M 11.56 s
FastExcel 2.09 M 2.76 s

Still, remember that Laravel Excel has many more features.

  •  用普通导出EXCEL的方法时,如果数据量过大会导致进程挂起,经过试验有两种方式可以解决这个问题。 一:BCP导出 代码如下: exec master..xp_cmdshell 'bcp "select * from OpenDataSource(''SQLOLEDB.1'',''Password=密码;User ID=sa;Server=IP').databaseName.dbo.tableNa

  • 当对各种报表需要进行Excel导出或其他处理的时候,PHPExcel是一个不错的选择,它对office2007以及office2003能完美支持,解决了各种不兼容问题,那么今天就来介绍一下PHPExcel的使用方法吧,对于一个扩展最简单的理解就是如下步骤:引入->实例->使用。 PHPExcel是相当强大的 MS Office Excel 文档生成类库,当需要输出比较复杂格式数据的时候,PHPEx

  • 实现步骤: 一:在http://phpexcel.codeplex.com/下载最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。 二:导出excel代码实现 /**方法**/ function index(){ $this->display(); } public function exportExcel(

  • 日期导入出错问题的原因 1、Excel中的日期和时间数据是以数值格式存储的,例如日期2018/8/12,实际上是以数值43324存储的。 2、FastAdmin的数据导入功能默认是不会对导入的数据进行数据转换处理的。 如果数据库要求输入的日期格式为YYYY/mm/dd,而程序从Excel表格中读取并导入数据库的日期为数值,这时候数据库就会报日期格式不正确的错误。 日期导入出错问题的解决办法 Fas

  • PHP通过phpspreadsheet读取Excel文件 安装 通过 Composer 安装 composer require phpoffice/phpspreadsheet 读文件 三行代码解决Excel文件的读取操作: use PhpOffice\PhpSpreadsheet\Reader\Xlsx; // 实例化 Xlsx,如果想要对 Xls 文件进行操作,这里 new Xls() 即可

  • 一、导出数字格式 在初始化  table.bootstrapTable 的时候增加js exportOptions: { fileName: 'export_' + Moment().format("YYYY-MM-DD"), // 原方法 定义生成的文件名 ignoreColumn: [0, 'operate'],// 原方法 默认跳过输出多选框和操

 相关资料
  • 项目说明: MintLeaf-Fast是一个基于SpringBoot2.0开发的,轻量级的,前后端分离的Java快速开发平台 开箱即用,节省开发时间,提升开发效率,能够快速开发项目并交付的接私活利器 支持MySQL、Oracle、SQL Server等主流数据库 项目特点: 代码简洁,注释丰富,上手容易,提供基础模块(用户管理,角色管理,菜单管理,代码生成等8个模块),可以直接作为一个后台管理系统

  • Fast 是 Node.js 的一个很小的基于 TCP 消息框架的 JSON 远程调用包,可用来编写简单的基于 JSON 的 RPC 系统。 示例代码: var fast = require('fast');var server = fast.createServer();server.rpc('echo', function (fname, lname, res) {    res.write(

  • 框架说明 基于springboot+shiro+freemarker的快速开发框架,代码结构清晰,快速上手使用! 配置代码生成器,减少70%开发时间,专注业务逻辑。 前端声明式组件封装、附带文档编写 ctrl+c ctrl+v 即可使用。封装数据源,可通过url、枚举、字典直接渲染组件。代码量极少且易维护。 layui常用代码的二次封装,省略layui部分繁琐的代码! 项目演示 - 演示地址:ht

  • fast fast 是一个基于 spring mvc 的 API 框架。 usage <dependency>     <groupId>org.smartx</groupId>     <artifactId>fast-core</artifactId>     <version>1.0</version></dependency> config fast config fast.api.key

  • Java ORM框架 大幅度提高开发效率 减少编码量 1. 极·简化DAO操作,大幅度提高编码效率;2. 支持自定义SQL,自动映射;3. 支持Redis缓存和内存缓存,自动更新缓存;5. 支持MyBatis Boolean success = UserFastDao.create().dao().insert(user); //增,新增成功后主键会在对象中设置Integer delCount =

  • fast-el 是轻量级的高效的表达式计算引擎,源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求。 Fel 是开放的,引擎执行中的多个模块都可以扩展或替换。Fel 的执行主要是通过函数实现,运算符(+、-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单。 Fel 有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生