首页 > 编程语言 >laravel PhpOffice 读取表格数据

laravel PhpOffice 读取表格数据

时间:2024-11-13 10:18:27浏览次数:1  
标签:laravel return 读取 extension worksheet PhpOffice file getCell data

    /**
     * 更新安通船期
     * Description 
     * Author Allen
     * Date 2024-11-11
     * @param  Request $request [description]
     * @return [type]           [description]
     */
    public function updateAntongShipDate(Request $request){
        set_time_limit(0);
        $file = request()->file('file');
        if (empty($file) || !$file->isValid()) {
            return '请选择文件';
        }

        $extension = $file->getClientOriginalExtension();//文件后缀名
        $fileType  = ['xls', 'xlsx'];
        if (!in_array($extension, $fileType)) {
            return '请上传xls\xlsx文件';
        }

        if ($file->isValid()) {

            $data['clientName'] = $file->getClientOriginalName();//文件原名
            $data['tmpName']    = $file->getFileName();
            $data['realPath']   = $file->getRealPath();//该文件所在路径
            $data['extension']  = substr($data['clientName'], strripos($data['clientName'], '.', '-1') + 1);
            // $data['extension']  = $file->getClientOriginalExtension();//文件后缀名
            if ($data['extension'] != "xls" && $data['extension'] != "xlsx") {
                echo('不是Excel文件,重新上传后缀名为xls的Excel表');
                exit;
            }

            $data['mimeTye'] = $file->getMimeType();//文件类型
            $data['newName'] = $data['clientName'];//存储文件名
            $file->move(storage_path('tempdir/'), $data['newName']);
            $filePath = storage_path('tempdir/') . $data['clientName'];

        } else {
            return '文件不可用';
        }
        try{

            // 加载Excel文件
            $spreadsheet = IOFactory::load($filePath);
            // 获取工作簿中的最后一个工作表
            $lastSheetIndex = $spreadsheet->getSheetCount() - 1; // 工作表索引是从 0 开始的
            $worksheet = $spreadsheet->getSheet($lastSheetIndex);

            // 获取所有合并的单元格
            $mergedCells = $worksheet->getMergeCells();

            // 查找包含 "东莞港二期-温州-天津" 的行
            $rowsToRead = [];

            foreach ($mergedCells as $cell) {
                [$startCell, $endCell] = preg_split('/:/', $cell);
                $cellValue = $worksheet->getCell($startCell)->getFormattedValue();
                if ($cellValue === '东莞港二期-温州-天津') {
                    $startRow=$worksheet->getCell($startCell)->getRow();
                    $endRow=$worksheet->getCell($endCell)->getRow();
                    $targetRow=$startRow-2;
                    $start_port=$worksheet->getCell('I'.$targetRow)->getFormattedValue();
                    // $end_port=$worksheet->getCell('M'.$targetRow)->getFormattedValue();

                    // 读取 A 列到 S 列,所有值
                    $data = [];
                    for ($row = $startRow; $row <= $endRow; $row++) {
                        $rowData = [];
                        for ($col = 'A'; $col <= 'S'; $col++) {
                            $cellValue = $worksheet->getCell($col . $row)->getFormattedValue();
                            $rowData[$col] = $cellValue;
                        }
                        $data[] = $rowData;
                    }
                }
            }

      
            unlink($filePath);
            return '成功更新数据'.count($data).'条';
            // return $res;
        } catch (\Exception $e) {
            $res = ['code' => 600, 'data' => '文件数据读取失败', 'getMessage' => $e->getMessage(), 'getFile' => $e->getFile(), 'getLine' => $e->getLine(), 'getTrace' => $e->getTrace()];
            return $res;

        }

    }

  

 

标签:laravel,return,读取,extension,worksheet,PhpOffice,file,getCell,data
From: https://www.cnblogs.com/blog-dyn/p/18543337

相关文章

  • 【NPOI】读取Excel文件
    NPOI是一个流行的.NET库,用于读取和写入Excel文件(包括XLS和XLSX格式)。以下是一个快速的指南,展示如何使用NPOI读取Excel文件的基本步骤。1.安装NPOI首先,你需要在项目中安装NPOI库。可以通过NuGet包管理器安装:Install-PackageNPOI或者通过.NETCLI安装......
  • R - 读取excel 文件
    #使用readxl包来读取Excel文件install.packages("readxl")#仅需运行一次library(readxl)#假设Excel文件名为"your_file.xlsx"#默认读取第一个工作表df<-read_excel("your_file.xlsx")#指定读取特定的工作表df<-read_excel("your_file.xlsx",......
  • 「漏洞复现」某融信运维安全审计系统 download 任意文件读取漏洞
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • 第21节 arkts 如何读取普通文件
    在ArkTS中读取普通文件可以通过以下几种方式:使用@ohos.fileio模块@ohos.fileio模块提供了一系列用于文件操作的接口,可以用于读取普通文件。以下是一个简单的示例,展示如何读取一个文本文件的内容:importfileiofrom'@ohos.fileio';@Entry@Componentstruct......
  • 三种读取配置文件的方式
      在编写JDBC的util包以读取文件时,配置文件的位置会影响其读取方式。当前,默认配置文件直接放置在src文件夹下。当读取.properties文件代码写法为:Propertiesprops=newProperties();props.load(newFileInputStream("db.properties")); 系统出现报错找不到文件,说......
  • ENVI55扩展工具: MODIS Gap-Filled 数据读取工具
    1工具介绍工具支持ENVI5.5及以上版本。大部分MODIS产品数据均可使用MCTK工具打开和处理。但是最近在使用MODISGap-Filled数据时,发现MCTK工具并不支持,会弹出如下提示。 MODISGap-Filled数据通常为年合成产品,例如MOD17A3HGF为年合成植被净初级生产力和总初级......
  • 鸿蒙开发,arkts 如何读取普通文件
    ArkTS提供了渲染控制的能力,包括条件渲染、循环渲染和数据懒加载等。这些渲染控制语句可以辅助UI的构建,提高应用的性能和用户体验。今天给大家分享arkts如何读取普通文件知识,如果有所帮助,大家点点关注支持一下,也可以联系上我一起学习。在ArkTS中读取普通文件可以通过以下......
  • python如何读取json文件
    在Python中读取JSON文件通常使用json模块,这是Python标准库的一部分,不需要额外安装。以下是读取JSON文件的基本步骤:打开JSON文件。使用json.load()函数将文件内容解析为Python对象(通常是字典或列表)。关闭文件。下面是一个具体的例子:pythonimportjson打开JSON文件withop......
  • 人工智能模型训练:从不同格式文件中读取训练数据集
    上一篇:《研发LLM模型,如何用数值表示人类自然语言?》序言:人工智能数据工程师在采集数据时往往会使用不同的工具,因此最终得到的原始数据结构各不相同。市场上已知的数据采集和分析工具所输出的文件格式大致有几种。前面我们介绍了如何从谷歌的TFDS中提取支持的格式数据,今天将为大家......
  • 基于proteus仿真实现的DS18B20温度传感器读取温度+lcd1602显示,附代码+仿真图
    #include"reg51.h"#include"absacc.h"#include"string.h"#defineucharunsignedchar#defineuintunsignedintuinttem=0;sbitRS=P2^5;sbitRW=P2^6;sbitE=P2^7;sbitDQ=P1^0;ucharstr0[]={"not,"};uchar......