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与数据库的交互不用愁了!!

 

转载于:https://www.cnblogs.com/martianShu/p/5869270.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Laravel中实现批量导入Excel,可以使用Laravel-Excel这个包装器。它是一个简单而优雅的Laravel包装器,围绕PhpSpreadsheet(一个流行的PHP库)进行导入和导出。 首先,确保已经安装Laravel-Excel包。然后,您可以按照以下步骤进行批量导入Excel: 1. 创建一个控制器来处理Excel导入的逻辑。 2. 在控制器中使用`use Maatwebsite\Excel\Facades\Excel`引入Excel门面。 3. 创建一个导入类,继承`Maatwebsite\Excel\Concerns\ToCollection`接口,并实现`collection()`方法。在这个方法中,您可以编写处理导入数据的逻辑。 4. 在控制器的方法中使用`Excel::import()`方法来导入Excel文件,并将导入类的实例作为参数传递给该方法。 5. 在路由中定义一个路由,将请求指向您创建的控制器方法。 以下是一个示例代码,演示了如何在Laravel中批量导入Excel: ```php use App\Imports\UsersImport; use Maatwebsite\Excel\Facades\Excel; class UserController extends Controller { public function import() { Excel::import(new UsersImport, 'users.xlsx'); // 导入成功后的逻辑 return redirect()->back()->with('success', 'Excel导入成功.'); } } ``` 在上面的示例中,我们在控制器的`import()`方法中使用`Excel::import()`方法来导入Excel文件。`UsersImport`是一个自定义的导入类,它实现了`ToCollection`接口。您可以在`UsersImport`类的`collection()`方法中编写处理导入数据的逻辑。 请确保您已经根据您的需求自定义了适合您的导入类,并将Excel文件的路径作为第二个参数传递给`Excel::import()`方法。 不要忘记在路由中定义一个路由,将请求指向您的控制器方法。 请注意,这只是一个示例代码,您可能需要根据您的实际应用程序进行适当的修改和调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Github每日精选(第29期):LaravelExcel 导出和导入Laravel-Excel](https://blog.csdn.net/weixin_40425640/article/details/126053684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [laravel Excel 3.1 使用教程 (导入篇)](https://blog.csdn.net/zfj915752851/article/details/103494400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值