Fast Excel import/export for Laravel, thanks to Spout.See benchmarks below.
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 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
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']
]);
});
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');
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');
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 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 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 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');
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.
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 有双引擎,同时支持解释执行和编译执行。可以根据性能要求选择执行方式。编译执行就是将表达式编译成字节码(生