1. 下载依赖: https://github.com/PHPOffice/PHPExcel

或使用命令安装:

composer require phpoffice/phpexcel 

2. 下载完成后,将 PHPExcel文件夹 放在laravel的 vendor 目录下;

更改支持PHP7.3语法:

将continue改成break

3. 在你需要使用的控制器引用:

use PHPExcel_IOFactory;
use PHPExcel;

4. 例子:读取Excel:

封装(为了防止 Class 'PHPExcel_IOFactory' not found 报错,以下使用两种引入):

namespace App\Http\Kit; use PHPExcel_IOFactory; use PHPExcel; use Exception; if (is_file(path_info()['base_path'].'/vendor/phpexcel/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php')){ require_once path_info()['base_path'].'/vendor/phpexcel/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php'; }else{ exit('文件不存在。'); class Excel { // 读取excel // 最多只能读10w+1行 // $excel_file是excel文件的绝对路径;$start_row是起始行,默认2;$end_row是截至行,默认最大行 public function excel_to_array($excel_file=null, $start_row = null, $end_row = null){ $test_data = [ 'excel_file'=> $excel_file, 'start_row'=> $start_row, 'end_row'=> $end_row, if (!$excel_file){ $state = 0; $msg = 'Excel路径参数不全'; $content = []; }else{ //加载excel文件 $filename = $excel_file; $objPHPExcelReader = PHPExcel_IOFactory::load($filename); $sheet = $objPHPExcelReader->getSheet(0); // 读取第一个工作表(编号从 0 开始,sheet) if (!$end_row){ $highestRow = $sheet->getHighestRow(); // 取得最大行数 }else{ $highestRow = $end_row; $highestColumn = $sheet->getHighestColumn(); // 取得最大列数 if ($highestColumn > 100001){ $state = 0; $msg = '最大行数100001行,如有超过,请切割文件'; $content = []; }else{ $arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; // 目标列标号 if (!$start_row){ // 默认从第二行读 $start_row = 2; $res_arr = []; for ($row = $start_row; $row <= $highestRow; $row++) { // 一次读取一列 $row_arr = []; for ($column = 0; $arr[$column] != 'F'; $column++) { $val = $sheet->getCellByColumnAndRow($column, $row)->getValue(); $row_arr[] = $val; $res_arr[] = $row_arr; $state = 1; $msg = 'Excel读取完成'; $content = $res_arr; return [ 'state'=> $state, 'msg'=> $msg, 'test_data'=> $test_data, 'content'=> $content, public function __call($func_name, $args){ $txt = "class:".__CLASS__." ,函数不存在:$func_name ,参数:$args "; exit($txt);

调用 excel_to_array($excel_file) 即可 例如:

$excel_file = '/home/wwwroot/default/xxxxxx/vendor/phpexcel/Excel/1.xlsx';
$array = $excel-> excel_to_array($excel_file) ;

var_dump($array);

总结:以上方法仅适用了我在实际业务场景中限制表格20000条操作,并且生产服务器的运行内存是2个G,如果有更大数据量的要求建议走WithChunkReading,这个方法实现了异步分块 读取 数据。问题描述 :用户上传 excel 表格, php 程序 读取 表格数据,由于表格不规范出现大量空行数据(列和行都存在同样的问题),导致 读取 表格数据时内存溢出。我是使用 Excel 的import 读取 表格数据的第一个参数是我们自己定义的表格数据处理实现类用来接收 读取 的数据。我们的处理类必须实现以上的三个接口类。 上图是一个简单的示意图,本文将会关注于隐藏在这个示意图中的核心细节,这里笔者挑出了其中几个比较重要的问题来说明。 1. 常说HBase数据 读取 要读Memstore、HFile和Blockcache,为什么上面Scanner只有StoreFileScanner和MemstoreScanner两种?没有BlockcacheScanner? HBas... 昨天讲了如何利用 Laravel Excel 扩展类去创建一个 excel 文件,今天来讲讲如何 读取 一个 excel 文件,这个在我们日常开发中经常遇到。比如,做一个 excel 导入功能, 读取 excel 里的数据,并存进数据库中。这时候就需要今天讲到的知识点了。 下面是代码: public function load Excel ForUser(){ $file = storage_path('app/public/ excel /user.xlsx');//获取\storage\app\public\ excel \user 我正在使用 laravel - excel 读取 Excel 文件.//http://localhost:8000/assets/panel/ excel /test123.xls$address = URL::to('/assets/panel/ excel /').'/test123.xls';// dd($address); Excel ::load($address, function($reader) {$r... //print_r($file);die; if($file -> isValid()) { $clientName = $file -> getClientOriginalName(); //客户端文件... SQL return codes that are preceded by a minus sign (-) indicate that the SQL statement execution was unsuccessful. IBM DB2 SQL error code list 官方文档地址:https://www.ibm.com/support/knowledgecente... 3.返回result scanner入口是RegionScanner,代表扫描一个region,其实现RegionScannerImpl有一个属性KeyValueHeap,这个KeyValueHeap又包装了多个StoreScanner。每个StoreScanner对应一个column fami...