美文网首页laravel
laravel-excel【操作excel】【已使用】

laravel-excel【操作excel】【已使用】

作者: tianmac | 来源:发表于2019-01-17 21:04 被阅读0次

    git larav-excel处理excel的包

    例子

    // 选中第一个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.

    <?php
    namespace App\Http\Controllers;
    
    use App\Http\Controllers\Controller;
    use App\Models\Admin\Condition;
    use DB;
    use Excel;
    
    ob_end_clean();
    set_time_limit(0);
    ini_set('memory_limit', '256M');
    
    class ExcelController extends Controller
    {
        //Excel文件导出功能 By Laravel学院
        public function export()
        {
            /* $title = array('0'=>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!';
        }
    }
    

    相关文章

      网友评论

        本文标题:laravel-excel【操作excel】【已使用】

        本文链接:https://www.haomeiwen.com/subject/iahuhxtx.html