参考资料
git larav-excel处理excel的包
其他方案-PHP导出数据的解决方案
例子
// 选中第一个Sheet, 这样第一行当做属性名
Excel::selectSheetsByIndex(0)->load($cretae_path, function ($reader) use (&$errorRow, &$successCount, &$rowsCount, &$user_id, &$item, &$file_url, &$history, $entry_way_id) {
//获得所有数据
$data = $reader->all()->toArray();
}
安装使用
Require this package in your composer.json
and update composer. This will download the package and PHPExcel of PHPOffice.
"maatwebsite/excel": "~2.1.0"
After updating composer, add the ServiceProvider to the providers array in config/app.php
Maatwebsite\Excel\ExcelServiceProvider::class,
You can use the facade for shorter code. Add this to your aliases:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
The class is bound to the ioC as excel
$excel = App::make('excel');
To publish the config settings in Laravel 5 use:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
This will add an excel.php
config file to your config folder.
array('id'=>'id','admin_id'=>'admin_id','role_id'=>'role_id','model'=>'model','field'=>'field','operate'=>'operate','field_value'=>'field_value','created_at'=>'created_at','updated_at'=>'updated_at')); */
$cellData = \App\Models\Admin\Condition::all()->toArray();
//$cellData = array_merge($title,$cellData);
/* Excel::create(time(),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->export('xls');
Excel::create(time(),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->export('xlsx');
Excel::create(time(),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->export('csv'); */
//导出到服务器上(默认路径storage/exports/,指定不同的路径storage_path('excel/exports'))
/* Excel::create(time(),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->store('xls', storage_path('excel/exports')); */
//导出到服务器和本地电脑
/* Excel::create(time(),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->store('xls')->export('xls'); */
//返回存储信息
/* Excel::create(time(),function($excel) use ($cellData){
$excel->sheet('score', function($sheet) use ($cellData){
$sheet->rows($cellData);
});
})->store('xls', false, true); */
/* Excel::create(time(), function($excel) {
$excel->sheet('First sheet', function($sheet) {
$sheet->setOrientation('landscape');
});
$excel->sheet('Second sheet', function($sheet) {
//设置文件的页边距等参数
$sheet->setPageMargin(array(
0.25, 0.30, 0.25, 0.30
));
});
})->export('xls'); */
Excel::create(time(), function ($excel) use ($cellData) {
$excel->sheet('First sheet', function ($sheet) {
$sheet->protect('password', function (\PHPExcel_Worksheet_Protection $protection) {
$protection->setSort(true);
});
});
})->export('xls');
}
public function import()
{
$filePath = 'storage/exports/1489989366.csv';
/* Excel::load($filePath, function($reader) {
//$reader->get()->groupBy('1489989366.csv');
//$workbookTitle = $reader->getTitle();
//var_dump($workbookTitle);
//$dd = $reader->first(); // 取第一行(默认去掉标题行)
//var_dump($dd);
//$data = $reader->all();
//$data = $reader->take(3)->all()->toArray(); //取3行(toObject)
//$data = $reader->skip(2)->take(3)->all(); //跳过2行取3行
//dd($data);
//$data = $reader->select(array('role_id', 'model','created_at'))->get()->toArray();
//获取导入文件的指定的列
//$reader->get(array('role_id', 'model'));
//dd($data);
$reader->each(function($sheet) {
//var_dump($sheet); //获取到每一行的所有信息
// Loop through all rows
$sheet->each(function($row) {
//var_dump($row); //获取到指定行的每列的信息
});
});
}); */
//Excel::selectSheets('Sheet1')->load(); //指定工作簿的分页
//Excel::selectSheets('Sheet1', 'Sheet2')->load();
$filePath = 'storage/exports/111.xlsx';
Excel::selectSheets('Sheet2')->load($filePath, function ($reader) {
//$data = $reader->all();
//时间格式的转化
/* $data = $reader->setDateColumns(array(
'created_at',
'updated_at'
))->get()->toArray(); */
//$data = $reader->setDateFormat('Y-m-d')->get()->toArray();
//dd($data);
//$results = $reader->remember(10)->get(); //缓存数据
});
/* $filePath = 'storage/exports/111.xlsx';
Excel::filter('chunk')->load($filePath)->chunk(5, function($results)
{
var_dump($results);die;
foreach($results as $row)
{
var_dump($row);
}
}); */
}
public function importall()
{
//导入整个文件夹
/* Excel::batch('D:/xampp/htdocs/inventory/storage/exports', function($rows, $file) {
$rows->each(function($row) {
//var_dump($row);
});
}); */
/* $files = array(
'storage/exports/111.xlsx'
);
Excel::batch($files, function($rows, $file) {
$rows->each(function($row) {
var_dump($row);
});
}); */
//循环文件的分页工作表
/* $files = array(
'storage/exports/111.xlsx'
);
Excel::batch($files, function($sheets, $file) {
$sheets->each(function($sheet) {
var_dump($sheet);
});
}); */
//Import by Config
Excel::load('storage/exports/111.xlsx')->byConfig('excel::import.sheets', function ($sheet) {
//$firstname = $sheet->firstname;
});
//编辑现有指定文件,重新导出
/* Excel::load('storage/exports/111.xlsx', function($file) {
$data = $file->all()->toArray();
})->export('csv'); */
//文件类型转换
/* Excel::load('storage/exports/111.xlsx', function($file) {
})->convert('csv'); */
//读取的文件,获取到文件的表头信息
$filePath = 'storage/exports/111.xlsx';
Excel::load($filePath, function ($reader) {
//$data = $reader->noHeading()->all()->toArray(); //获取到文件的表头信息
$data = $reader->ignoreEmpty()->all()->toArray(); //忽略空单元格
var_dump($data);
}, 'UTF-8'); //指定编码
}
public function importfile()
{
DB::connection()->disableQueryLog();
echo '1';
$filePath = 'storage/exports/40000.csv';
Excel::selectSheets('Sheet1')->load($filePath, function ($reader) {
echo '2';
$data = $reader->all()->toArray();
$num = count($data); //总数
$one = 500; //每次插入次数
$freq = ceil($num / $one);
$jumpover = 0;
for ($i = 1; $i <= $freq; $i++) {
var_dump($jumpover);
$data = $reader->skip($jumpover)->take($one)->all()->toArray();
//var_dump($data[0]);die;
DB::table('admin_condition1')->insert($data);
echo memory_get_usage() . "\n";
unset($data);
echo memory_get_usage() . "\n";
$jumpover = $one * $i;
/* if($i==3){
die;
} */
}
//var_dump($freq);
//$data = $reader->take(500)->all()->toArray();
//$data = $reader->skip(500)->take(500)->all();
//var_dump($data);
});
unset($data);
echo memory_get_usage() . "\n";
echo 'ok!';
}
}