自己写也可以,但是我选择用强大的包。
要求 : php: >=5.5
安装:
composer require "maatwebsite/excel:~2.1.0"
In Laravel 5.5 or higher, this package will be automatically discovered and you can safely skip the following two steps.
(如果Laravel版本>=5.5,则跳过以下两步!)
If using Laravel 5.4 or lower, after updating composer, add the ServiceProvider to the providers array in config/app.php
(如果版本<=5.4)那么就需要做以下配置,在config/app.php
Maatwebsite\Excel\ExcelServiceProvider::class,
You can use the facade for shorter code; if using Laravel 5.4 or lower, add this to your aliases:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
好了,直接进入使用环节:
的确简单强大,直接写个公共方法以便调用:
public function DownLoadDataList($data, $file_name = '访问统计信息表',$sheet_name='统计信息') {
Excel::create($file_name, function ($excel) use ($data, $sheet_name) {
$excel->sheet($sheet_name, function ($sheet) use ($data) {
$sheet->fromModel($data)
->freezeFirstRow(); #冻结第一行
});
})
->export('xlsx'); #导出格式为xlsx
$file_name:导出后的文件文件名;
$sheeet_name:导出后sheet名称;
注意:fromModel也可以直接改为fromArray,但是我们Model应该用的多一些,传参方式一样,具体细节可以参考手册。不用自行设置列名,会自动按照数据库的顺序写在第一行。
参考:
https://packagist.org/packages/maatwebsite/excel
更多用途:
http://www.maatwebsite.nl/laravel-excel/docs
读取excel数据:
public function readExcelOnly() {
ini_set('memory_limit', '1500M'); //内存限制
set_time_limit(0); //
$files = Storage::allFiles('testData');
foreach ($files as $key => $excel_file_path) {
$excel_file_path = 'D:/phpStudy/WWW/' . $excel_file_path;
$excel_data[] = Excel::load($excel_file_path)->get()->toArray();
}
return $excel_data;
}