日志

记tp5.1使用composer PhpOffice的xlsx表格文件导入数据库

 来源    2020-09-16    0  

在项目环境下
composer require phpoffice/phpspreadsheet
在项目中引用
use PhpOffice\PhpSpreadsheet\IOFactory;

下面是 上传xlsx导入数据库方法

public function getExcel(){
        $user_id = input('user_id',1);     
        //ajax 文件跨域 验证
        $request_method = $_SERVER['REQUEST_METHOD'];
        if ($request_method === 'OPTIONS') {
            header('Access-Control-Allow-Origin:*');
            header('Access-Control-Allow-Credentials:true');
            header('Access-Control-Allow-Methods:GET, POST, OPTIONS');
            header('Access-Control-Max-Age:1728000');
            header('Content-Type:text/plain charset=UTF-8');
            header('Content-Length: 0',true);
            header('status: 204');
            header('HTTP/1.0 204 No Content');
        }

        $file = request()->file('file');
        if(!$file){
             return json(['errcode'=>-1,'errmsg'=>'请上传文件']); 
        }

        $info = $file->validate(['size'=>5*1024*1024,'ext'=>'xlsx,xls'])->move('uploads/excel/'.$user_id);
        if(!$info){
           return json(['errcode'=>-1,'errmsg'=>'请返回xlsx,xls格式表格','fileerr'=>$file->getError()]); 
        }
        //判断文件类型
        $suffix = $info->getExtension();
        
        if($suffix=="xlsx"){
            $objReader = IOFactory::createReader('Xlsx');
        }else{
            $objReader = IOFactory::createReader('Xls');
        }
        
        $objPHPExcel = $objReader->load(Env::get('root_path').'public/uploads/excel/'.$user_id.'/'.$info->getSaveName());
        $extension = strtolower( pathinfo($info->getSaveName(), PATHINFO_EXTENSION) );

        //读取默认工作表
        $worksheet = $objPHPExcel->getSheet(0);
        //取得一共有多少行
        $allRow = $worksheet->getHighestRow();
        $data = [];
        
        if($allRow > 101){
            return json(['errcode'=>-1,'errmsg'=>'最多一百条']); 
        }
        
        for ($i = 2; $i <= $allRow; $i++)
        {
            $data = array();
            $goods_data = array();
            $data['order_sn_third'] = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
            $goods_data['goods_name'] = $objPHPExcel->getActiveSheet()->getCell('B'.$i)->getValue();
            $goods_data['goods_sn'] = $objPHPExcel->getActiveSheet()->getCell('C'.$i)->getValue();
            $goods_data['goods_num'] = $objPHPExcel->getActiveSheet()->getCell('D'.$i)->getValue();
            
            $data['consignee'] = $objPHPExcel->getActiveSheet()->getCell('E'.$i)->getValue();
            $data['mobile'] = $objPHPExcel->getActiveSheet()->getCell('F'.$i)->getValue();
            $data['province'] = $objPHPExcel->getActiveSheet()->getCell('G'.$i)->getValue();
            $data['city'] = $objPHPExcel->getActiveSheet()->getCell('H'.$i)->getValue();
            $data['district'] = $objPHPExcel->getActiveSheet()->getCell('I'.$i)->getValue();
            $data['address'] = $objPHPExcel->getActiveSheet()->getCell('J'.$i)->getValue();
            $data['user_note'] = $objPHPExcel->getActiveSheet()->getCell('K'.$i)->getValue();
            
            
            //防止出现空白Excel导致mysql报错,对数据做下判断
            if(empty($data['order_sn_third']) && empty($data['goods_sn'])){
                //跳出循环
                break;
            }
            $data['create_time'] = time();
            $data['status'] = 1;
            $data['user_id'] = $user_id;
            $data['order_sn'] = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
            
            //插入数据库
            $order_id = db('order_info')->insertGetId($data);
            $goods_data['order_id'] = $order_id;
            $res = db('order_goods')->insert($goods_data);  
        }
        
        return json(['errcode'=>0,'errmsg'=>'导入完成']); 
        
        
    }
相关文章
代码沉淀 - EPPlus - 操作xlsx表格文件
日志EPPlus - Create advanced Excel spreadsheets on the server.web: http://epplus.codeplex.com/nuget: Ins ...
通过Python将Excel表格信息导入数据库
日志前言     公司原采用Excel表格方式记录着服务器资产信息,随着业务的增加,相应的硬件资产也增加,同时物理机虚拟化出多台虚拟机,存在表格管理杂乱.变更资产信息不能及时相互同步, 为了紧跟时代的步伐 ...
1
抽奖升级版 可以经表格数据导入数据库,抽奖设置,补抽
日志using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
2
TP5使用Composer安装phpoffice/phpspreadsheet,导出Excel文件
日志1.composer安装: composer require phpoffice/phpspreadsheet 2.点击导出按钮,触发控制器里面的方法 wdjzdc() 3. 在控制中引入  use ...
1
TP5.0 PHPExcel 数据表格导出导入(引)
日志TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...
1
[php][thinkphp] 记一次Composer Linux版安装以及用它进行thinkphp项目初始化
日志Composer安装thinkphp,thinkphp5.1开始官网不在提供下载包,只能通过git clone 和Composer包管理器进行下载. php中开启exec,system等函数调用系统命 ...
[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案
日志1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本以上 ...
1
TP5.0 PHPExcel 数据表格导出导入(原)
日志TP5.0 PHPExcel 数据表格导出导入(原) 1.先在github里面下载PHPexcel这个类库 2.解压之后把它复制到extend里面 控制器代码如下: <?php /** * Cr ...
tp5.1 composer安装PHPExcel以及导入\导出Excel
日志一.安装PHPExcel 1.下载:PHPExcel  https://github.com/PHPOffice/PHPExcel 2.解压后:Classes文件夹改名为PHPExcel  3.把文件 ...
1
php – 如何使用Composer安装CodeIgniter核心(系统)文件?
问答如何使用Composer仅安装codeigniter核心(系统)代码?::这可能不是你想要的,但显而易见的答案是创建一个composer.json文件并需要"ellislab / codei ...
1
将.xlsx文件导入R
问答请有人可以帮助我把excel 2007(.xlsx)文件导入R的最佳方法.我试过几种方法,没有一个似乎工作.我已经升级到2.13.1,windows XP,xlsx 0.3.0,我不知道为什么错误不断 ...
2
PHP将Excel导入数据库(xls和xlsx)
问答我试图搜索一些插件将Excel文件导入MySQL数据库,其中之一是http://code.google.com/p/php-excel-reader/ 该工具非常强大,将整个excel内容显示为htm ...
1
google-apps-script – 如何自动将数据从上传的CSV或XLS文件导入Google表格
问答我在服务器上有一个遗留数据库系统(不可访问Web),生成CSV或XLS报告给Google Drive文件夹.目前,我在云端硬盘网络界面中手动打开这些文件,并将其转换为Google表格. 我宁愿这是自动 ...
1
将大的xlsx文件导入R?
问答我想知道是否有人知道一种从"大"xlsx文件(〜20Mb)导入数据的方法.我试图使用xlsx和XLConnect库.不幸的是,使用rJava和我总是获得相同的错误: > li ...
1
有没有办法将LOAD DATA INFILE(导入)xlsx文件导入MySQL数据库表
问答我知道这已经讨论了很多,但我找不到如何做到这一点的解决方案. 我需要的是将excel文件(xls / xlsx)导入我的数据库表.这是一个执行该操作的按钮,执行的命令是这样的: string cmdT ...
1
cygwin – mget:filename.xlsx:文件已经存在,而xfer:clobber未设置
问答我得到这个:mget:filename.xlsx:文件已经存在,当我尝试下载我的ftp服务器的内容时​​,xfer:clobber未设置错误.基本上它是使用cygwin设置的.我们最近升级了按照设定的 ...
1
在Laravel 4中使用Composer加载css/js文件?
问答我正在努力在Laravel 4创建一个新项目.我在Laravel 3中有一点经验,我习惯了资产系统.我现在在解决如何在新系统中加载CSS和JS文件有很多麻烦. 我相信我应该使用Composer PHP ...
1
php – 如何设置将存储表格数据的数据库表?
问答我将有一个拥有数百万个表的网站(带有数据的文字HTML表),所以我需要存储它.我正在努力解决每个表行是否应该作为单独的记录存储在数据库中的问题,或者我是否应该将整个表存储为JSON编码数据(或类似格式 ...
1
javascript – 使用Google表格作为后端数据库[暂停]
问答我是非营利组织的志愿者,目前我们通过Squarespace运营我们的网站.我们设立了数百个网页来赞助我们的孩子.每隔几个月,当我们想要更新他们的个人信息时,我们必须进入每个网页并重新输入所有信息.我们 ...
1
ios – 如何使用Document目录中的UIWebview打开和查看iphone中的.doc,.docx,.rtf,.ppt,.pptx,.xlsx,.xls文件?
问答我们可以打开&使用UIWebview查看iphone中的.doc,.docx,.rtf,.ppt,.pptx,.xls,.xlsx文件? 我正在使用Document目录来显示该文件. .doc ...
1