• tp6之批量导入1


     1 <?php
     2 
     3 
     4 namespace appapicontrollerconsole;
     5 
     6 use appapimodelMonitoringViolationType;
     7 use PhpOfficePhpSpreadsheetIOFactory;
     8 use thinkRequest;
     9 
    10 class Violation
    11 {
    12 
    13     /**
    14      * 批量导入
    15      * @param Request $request
    16      * @param MonitoringViolationType $MonitoringViolationType
    17      * @return 	hinkResponse
    18      */
    19     public function importPost(Request $request, MonitoringViolationType $MonitoringViolationType)
    20     {
    21         $file = $request->file();
    22         $type = $request->post('type/d', 1);
    23         validate([
    24             'file' => 'require|file|fileExt:xlsx',
    25         ])->check($file);
    26 
    27         $path = app('filesystem')->disk('local')->putFile('import', $file['file'], function(){
    28             return 'violation_'.time();
    29         });
    30 
    31         $objRead = IOFactory::createReader('Xlsx');
    32         $objRead->setReadDataOnly(true);    //则只读内容,提升读取Excel效率
    33         $obj = $objRead->load(config('filesystem.disks.local.root').'/'.$path); //建立excel对象
    34         $currSheet = $obj->getSheet(0); //获取指定的sheet表
    35         $rowCount = $currSheet->getHighestRow(); //获取总行数
    36 
    37         $data = [];
    38         //读取内容
    39         for ($row = 9; $row <= $rowCount; $row++) {
    40             //分类
    41             $data['A'] = $currSheet->getCell('A'.$row)->getValue();
    42             $data['B'] = $currSheet->getCell('B'.$row)->getValue();
    43             $data['C'] = $currSheet->getCell('C'.$row)->getValue();
    44             $data['D'] = $currSheet->getCell('D'.$row)->getValue();
    45             $data['E'] = $currSheet->getCell('E'.$row)->getValue();
    46             $data['F'] = $currSheet->getCell('F'.$row)->getValue();
    47             $data['G'] = $currSheet->getCell('G'.$row)->getValue();
    48 
    49             $pid = 0;
    50             foreach($data as $key => $val) {
    51                 if (!empty($val)) {
    52                     $where = $pid == 0 ? ['name' => $val, 'type' => $type] : ['name' => $val, 'pid' => $pid, 'type' => $type];
    53                     $id = $MonitoringViolationType->where($where)->value('id', 0);
    54                     if (empty($id)) {
    55                         $pid = $MonitoringViolationType->insertGetId(['name' => $val, 'pid' => $pid, 'is_directly' => 0, 'type' => $type]);
    56                     } else {
    57                         $pid = $id;
    58                     }
    59                 }
    60             }
    61 
    62             //内容
    63             $name = $currSheet->getCell('H'.$row)->getValue() ?? '';
    64             $remark = $currSheet->getCell('I'.$row)->getValue() ?? '';
    65 
    66             if (!empty($name)) {
    67                 if (!$MonitoringViolationType->where(['name' => $name, 'pid' => $pid, 'type' => $type])->value('id')) {
    68                     $MonitoringViolationType->insert(['name' => $name, 'pid' => $pid, 'remark' => $remark, 'is_directly' => 0, 'type' => $type]);
    69                 }
    70             }
    71         }
    72 
    73         app('filesystem')->disk('local')->delete($path);
    74 
    75         return JsonSuccess('导入成功');
    76     }
    77 
    78     /**
    79      * 下载模板表格
    80      * @return
    81      */
    82     public function tempGet()
    83     {
    84         $file = getcwd().'/storage/违法类型模块表格.xlsx';
    85         header('content-type:application/octet-stream');
    86         header('content-disposition:attachment; filename=' . basename($file));
    87         header('content-length:' . filesize($file));
    88         return file_get_contents($file);
    89        //return download(config('filesystem.disks.public.root').'/'.'违法类型模块表格.xlsx');
    90     }
    91 }
    执指之手,与之偕老!
  • 相关阅读:
    Java实现字符串编辑距离
    Java实现字符串编辑距离
    Java实现字符串编辑距离
    Java实现最大连续乘积子数组
    Java实现最大连续乘积子数组
    Java实现最大连续乘积子数组
    Java实现最大连续乘积子数组
    Java实现最大连续乘积子数组
    Silverlight消散,WinRT登台
    WPF四年,尤不足以替代WinForm
  • 原文地址:https://www.cnblogs.com/silen0119/p/15128274.html
Copyright © 2020-2023  润新知