• Laravel Excel的简单安装及使用


      后台操作数据库时经常会在数据和Excel之间进行大量地导入导出操作,从我的亲身经历来看最近导表也不下百份,以往的shell脚本已经不能满足现在的需求了,所以刚好就碰到了Laravel Excel这款强大的工具,不过网上的资料也许太多导致之前安装都出了一些问题,所以专程记录一下避免以后再绕弯路。

      之前我把Excel数据导入数据库都是通过shell脚本处理,先把excel的内容拷贝到一个txt文档里,注意所有的excel单位格必须填充内容(null值填写为'空'或者'无'),然后所有数据不能换行,并且去除txt文件如 ‘,’’和空格这些符号,最后再用readline方法,以'    '为分隔符获取每一列的数据:

    cat temp.txt|awk 'NR>1'|while read line
    do
        myDate=`echo $line|awk -F'    ' '{printf("%s",$1)}'`
        myIn=`echo $line|awk -F'    ' '{printf("%s",$2)}'`
        myOut=`echo $line|awk -F'    ' '{printf("%s",$3)}'`
        remark=`echo $line|awk -F'    ' '{printf("%s",$4)}'`
        'mysql -hxxx -uxxx -pxxx --default-character-set=utf8'-N -e"
       insert into t_record(myDate,myIn,myOut,remark) values('$myDate','$myIn','$myOut','$remark');
      "
    done

      这种方法比较复杂,对txt的要求比较高,一旦数据量大一些或者存在换行的情况就十分容易出错,恰好自己现在开发的项目用到Laravel框架,所以就索性全部用其自带的Excel来完优化导表过程吧。

      安装:

      Laravel Excel是一款既可以执行Excel数据导入也可以执行Excel导出的工具,其官方文档可以参考http://www.maatwebsite.nl/laravel-excel/docs。在安装这个插件之前首先确保你的电脑或者服务器安装了composer,没安装的可以参考http://www.jianshu.com/p/256547b495c2,当你在命令行下输入composer出现几个大大的Composer时说明已经安装成功了。

      首先打开要添加插件的那个项目的composer.json文件,由于我当时用的是Lavarel4所以在require部分添加''maatwebsite/excel'':''~1.3'',如果是Laravel5则添加    ''maatwebsite/excel'':''~2.1.0'',随后执行composer update命令就可以把所需要的文件夹下载到你的项目中。值得注意的是如果你只想更新Excel这个插件 可以直接执行   composer update maatwebsite/excel 命令,因为执行composer update会把所有需要更新的内容都update一遍,网络差,耗时长的情况下简直是噩梦,所以建议需要哪个东西才更新哪个,不要一下子全部更新了。

      更新成功后,在你的vendor目录下会出现maatwebsite和phpoffice这两个文件夹,如果没有继续回去更新吧(试试国内的镜像)。然后在config/app.php内引入两行说明:

    在providers的数组里添加'Maatwebsite\Excel\ExcelServiceProvider'

    在aliases里添加'Excel' => 'Maatwebsite\Excel\Facades\Excel'

      最后再在项目的根目录下执行php artisan config:publish maatwebsite/excel命令,如果是5则执行php artisan vendor:publish就完成整个安装过程,其实整个过程并不复杂,只要看到那两个文件夹出现了,就有十之八九了。

      使用:

    首先在具体的Controller的Php文件里加上 use Maatwebsite\Excel\Facades\Excel;

    然后可以通过创建一个Excel对象或者直接调用Excel类里的方法来实现导出导入功能

    //创建对象导入数据(类的话直接使用 Excel::load()方法)
    $excel = App::make('excel');//excel类
    $excel->load("/temp.xlsx", function($reader) //reader读取excel内容
    {
        $reader = $reader->getSheet(0);//excel第一张sheet
        $results = $reader->toArray();
        unset($results[0]);//去除表头
        if ($results)
        {
            foreach ($results as $key => $value)
            {
                $data = [];
                $data['myDate'] = $value[0] == null ? '':trim($value[0]);
                $data['myIn'] = $value[1] == null ? '' : trim($value[1]);
                $data['myOut'] = $value[2] == null ? '' : trim($value[2]);
                $data['remark'] = $value[3] == null ? '' : trim($value[3]);
                    
                $res = DB::table('t_record')->insertGetId($data);
            }
        }
    });
    //使用类的方法导出excel
    //
    创建一个文件并导出 $test='第一个位置'; Excel::create("new.xlsx", function($excel) use($test) { //创建sheet $excel->sheet('sheet1',function($sheet) use($test) { //填充每个单元格的内容 $sheet->cell('A1',function($cell) use ($test) { $cell->setValue($test); }); }); })->export('xls'); //读取一个文件并导出 Excel::load("new.xlsx", function($excel) { //读取sheet $excel->sheet('sheet1',function($sheet) { //修改每个单元格的内容 $sheet->cell('A1',function($cell) { $cell->setValue('1'); }); }); })->export('xls');

    除此之外还有例如为excel设置标题、字体大小、单元格的大小、背景颜色、宽度、高度、水平、垂直居中、外边距、内边距等等,功能十分强大,让你感觉你不仅仅是在导出一个excel而是在写一个html+css的页面,具体的需求功能可以参考其API文档。好了,以后的excel与数据库的交互不用愁了!!

  • 相关阅读:
    forget word out4
    forget word out2
    forget words out1
    en_o out1
    en_e outtest2
    en_e out1
    疑难en_a
    en_a
    entest1
    铺音out2
  • 原文地址:https://www.cnblogs.com/martianShu/p/5869270.html
Copyright © 2020-2023  润新知