laravel实现excel表的导入导出功能
Posted 花衣终会凋零,但愿余香缠绕指间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel实现excel表的导入导出功能相关的知识,希望对你有一定的参考价值。
这是个我去公司之后曾经折磨我很久很久的功能查阅了很多资料但是功夫不负有心人在本人的不懈努力下还是实现了这个功
namespace AppHttpControllers; use AppHttpControllersAdminContentTypesFile; use AppModelsWin1; use IlluminateHttpRequest; use IlluminateSupportFacadesDB; use IlluminateSupportFacadesInput; use IlluminateSupportFacadesSchema; use IlluminateSupportFacadesStorage; use MaatwebsiteExcelFacadesExcel; use IlluminateRoutingController; use SymfonyComponentCssSelectorParserReader;
将数据导出excel功能代码
public function index(Excel $excel){ //将数据库中的信息转化为excel文件内容 $data=Win1::with(‘hasManyWindow‘)->get(); foreach ($data as $key){ $export[]=array( ‘id‘=>$key[‘id‘], ‘window‘=>$key[‘window‘], // 数据表中的两个字段 ); } $table_name=‘窗口名称‘; $excel::create($table_name,function ($excel)use($export){ $excel->sheet(‘Sheet1‘,function ($sheet)use($export){ $sheet->fromArray($export); }); })->store(‘xlsx‘)->export(‘xlsx‘); }
将excel表中的数据通过视图层按钮导入数据库
public function excelfile(Request $request) { //1.思路get传输过来的Excel文件地址 //2.循环读取数据保存到数组 //3.循环数组保存到数据库中 $flag=true; $file=$request->file(‘file‘); if($file){ //得到文件的路径 $realPath = $file->getRealPath(); //上传文件的后缀. $entension = $file -> getClientOriginalExtension(); // 获取上传的文件缓存在tmp文件夹下的绝对路径 $newpath=$file->getRealPath(); $tabl_name = date(‘YmdHis‘).mt_rand(100,999);//时间戳 if($flag==true){ Excel::load($realPath,function ($reader) use ($tabl_name){ //获取excel的第几张表 $reader = $reader->getSheet(0); //获取表中的数据 $data = $reader->toArray(); for($row=0;$row<count($data);$row++){ //echo $data[$row][‘0‘].‘ ‘; DB::table(‘windowmessage‘)->insert([‘id‘=>$data[$row][‘0‘],‘window‘=>$data[$row][‘1‘]]); } }); return ‘<script>alert("文件上传成功");window.location.href="importexcel"</script>‘; } }else{ return ‘<script>alert("文件为空上传失败!请重新上传");window.location.href="importexcel"</script>‘; } }
下面是blade模板中的代码(ps:给自己看的)
<a href="{{url(‘excelExport‘)}}" id="href"><div id="btn" >下载Excel</div></a> {{--导入按钮--}} <form style="display:none" action="{{url(‘excelfile‘)}}" method="post" enctype="multipart/form-data"> {{csrf_field()}} <input type="file" name="file" value=""> </form> <input type="submit" value="批量导入" id="tijiao" > <!-- 记得载入jquery文件 --> <script> $(‘#tijiao‘).click(function(){ $(this).prev(‘form‘).find(‘[name="file"]‘).trigger(‘click‘); }); // 当表单文件有变化时执行提交动作 $(‘[name="file"]‘).change(function(){ if($(this).val()){ $(‘#tijiao‘).addClass(‘disabled‘ ); $(this).parent().submit(); } }); </script>
以上是关于laravel实现excel表的导入导出功能的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Laravel Excel 实现 Excel-CSV 文件导入导出功能