使用 Laravel-Excel 进行 CSV/EXCEL 文件读写

使用 Laravel-Excel 进行 CSV/EXCEL 文件读写

https://blog.csdn.net/yiluohan0307/article/details/80229978

http://www.ptbird.cn/laravel-excel-csv.html

一、需求

项目需要从 csv 中导入数据并且写入到数据表中。

因为使用 Laravel 框架,因此就直接用了 Laravel-Excel 进行数据的读写操作。

网上关于 Laravel-Excel 的使用方法有很多,比较推荐的是在 laravel学院上的一篇:

Laravel-Excel 文档地址:

注意事项:

目前 Laravel-Excel 已经到了 3.0 版本,不再基于 PHPExcel,而是使用 PhpSpreadsheet

但是现在 3.0 版本不能 import ,只能 export ,所以如果想要导入 excel/csv 只能使用 2.0 版本。

import 功能将在 3.1 版本加入(应该是能够等到的,我写文章的时候,9 days ago 作者还在 push 代码:https://github.com/Maatwebsite/Laravel-Excel/)。

TIM截图20180416130424.jpg

二、安装配置 laravel-excel

我使用的是 laravel 5.6 版本:(laravel-excel 3.0 只能是 ^5.5 版本),安装的是 ~2.1.0

Laravel 4 版本应当安装:~1.3

1. 安装

composer require maatwebsite/excel ~2.1.0

2. 配置 config/app.php

providers 数组中添加:

Maatwebsite\Excel\ExcelServiceProvider::class,

aliases 数组中添加:

'Excel' => Maatwebsite\Excel\Facades\Excel::class,

3. 导出 Excel.php 配置文件

php artisan vendor:publish

这里可能会需要选择某个 tag 进行导出,根据需要输入要导出的配置文件的 tag 即可

三、导入 Excel

因为是使用的文件上传功能,因此将文件存储也加上去了。

因为 $path 得到的文件地址没有 storage/app/ ,因此需要加上。

这里需要注意的是,laravel-excel 的 load 使用的 path 参数,是本地文件的目录,因此只需要给出本地文件目录地址即可,与 web 目录无关。

// 文件上传到了 storage/app/patient/xxxxx.txt $path = $request->file('file')->store('patient'); // dd($path); // $path = "patient/47QhWPGzUgBCLZewclupIWxwfwIQdeDdlyx4DA84.txt"; // 更新文件本地地址 $path = 'storage/app/' . $path; // 获取 csv 内容 $data = Excel::load($path, function ($reader) {
                                            }, 'GBK')->get(); dd($data);

关键的方法:

$data = Excel::load($path, function ($reader) {
                 }, 'GBK')->get();

我是使用的 get() 方法来获取数据,除此之外,也可以在回调函数中获取,但是没办法回调什么的

Excel::load($path,function($reader){ $data = $reader->all(); dd($data); })
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113100.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入理解PHP的GC(Garbage collection)问题「建议收藏」

    深入理解PHP的GC(Garbage collection)问题

    2022年2月19日
    48
  • initramfs-kernel_ubuntu initramfs

    initramfs-kernel_ubuntu initramfsLinux系统启动时使用initramfs(initramfilesystem),initramfs可以在启动早期提供一个用户态环境,借助它可以完成一些内核在启动阶段不易完成的工作。当然initramfs是可选的,Linux中的内核编译选项默认开启initrd。在下面的示例情况中你可能要考虑用initramfs。加载模块,比如第三方driver定制化启动过程(比如打印welcomeme…

    2022年8月11日
    8
  • 单例模式 指令重排_php单例模式

    单例模式 指令重排_php单例模式单例模式写法有很多,于是我看到了这么一种写法:publicclassSingletonTest{privateSingletonTest(){}privatestaticSingletonTestsingletonTest=null;publicstaticSingletonTestgetSingletonTest()…

    2022年10月17日
    2
  • 【ArcGIS】基础教程:全域莫兰指数与局域莫兰指数的计算

    【ArcGIS】基础教程:全域莫兰指数与局域莫兰指数的计算莫兰指数(Moran’sI)是研究变量在同一个分布区内的观测数据之间潜在的相互依赖性的一个重要研究指标,在本文中,我们将探讨局域(AnselinLocalMoranI)与全域两种莫兰指数(MoranI)计算在Arcgis中的实现。作者才疏学浅,如有任何错误欢迎指正。全域莫兰指数首先请注意,在Arcgis中计算莫兰指数时只能使用矢量数据进行计算。所以如果需要计算一个栅格数据的莫兰指数的话,建议先转换成矢量数据再进行计算。计算全域莫兰指数的工具为【工具箱——SpatialStatistic

    2022年6月25日
    119
  • c# break,continue,goto 跳出循环「建议收藏」

    c# break,continue,goto 跳出循环「建议收藏」1.break跳出循环protectedintTest1(){intindex=0;for(inti=0;i<5;i++){if(i==2){//单个循环,跳出整个for循环,//多个循环,跳出最内层for循环break;…

    2022年6月4日
    51
  • 大数据应用开发八大基本原则

    大数据应用开发八大基本原则·        大数据应用正在从概念走向现实,而企业在大数据应用开发时,软件的弹性(Resilient)正在成为决定大数据应用成败的关键因素。弹性差的应用无法应对大规模的数据集,在测试和运营中也缺乏透明度,而且也不安全。·        避免大数据应用在生产环境中掉链子的最佳办法就是在开发阶段就开发弹性应用,例如:健壮性、经过测试、可改变、可审计、高安全、可监控。·        可以说

    2022年6月4日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号