首页 > 数据库 >上传excel到数据库

上传excel到数据库

时间:2024-07-09 15:44:10浏览次数:11  
标签:info log ruleBase 数据库 excel str type import 上传

上传excel到数据库:
package com.wisdragon.controller.dataQuality;

import com.wisdragon.comm.constant.Constant;
import com.wisdragon.controller.common.BaseController;
import com.wisdragon.model.dataQuality.RuleBase;
import com.wisdragon.model.dataQuality.RuleValue;
import com.wisdragon.service.dataQuality.IRuleBaseService;
import com.wisdragon.service.dataQuality.IRuleValueService;
import com.wisdragon.utils.JsonMapper;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Description:excel规则库上传excel文件到数据库
 * @author 韩波
 * @create 2018/10/11 13:29
 */
@Controller
@RequestMapping(value = {"/dataQuality/"})
public class ExcelUploadController extends BaseController {
    private Workbook wb;
    private Sheet sheet;
    private Row row;
    private List<List<String>> list;
    private static final Logger log = LogManager.getLogger(ExcelUploadController.class);

    @Autowired
    public IRuleBaseService ruleBaseService;
    @Autowired
    public IRuleValueService ruleValueService;

    public void ReadExcelUtils(@RequestParam("file") MultipartFile file) {
       try {
           String[] fileName = file.getOriginalFilename().split("[\\.]");
           if ("xls".equals(fileName[1]) || "xlsx".equals(fileName[1])) {
               CommonsMultipartFile cFile = (CommonsMultipartFile)file;
               DiskFileItem dfi = (DiskFileItem)cFile.getFileItem();
               InputStream ins = dfi.getInputStream();
               wb = new XSSFWorkbook(ins);
           } else {
               System.out.print("文件格式不正确!请使用.xls或.xlsx后缀文档。");
               return;
           }
           list = new ArrayList<>();
           sheet = wb.getSheetAt(0);
           int fristRow = sheet.getFirstRowNum();
           int lastRow = sheet.getLastRowNum();
           for(int i= fristRow+1; i<=lastRow; i++) {
               List<String> sList = new ArrayList<>();
               row = sheet.getRow(i);
               if(row != null) {
                   int fristcell = row.getFirstCellNum();
                   int lastcell = row.getLastCellNum();
                   for(int ii = fristcell; ii<lastcell; ii++) {
                       Cell cell = row.getCell(ii);
                        if(cell != null) {
                            sList.add(cell.toString());
                        }
                   }
               }
               list.add(sList);
           }
           for(List<String> str : list) {
               System.out.println(str.toString());
           }
       } catch (Exception e) {
            e.printStackTrace();
       }
    }

    public RuleBase arrangementRuleBase(List<String> str) {
        RuleBase rb = new RuleBase();
        log.info(str.size());
        if(str.size()==3) {
            rb.setName(str.get(0));
            rb.setDescriber(str.get(2));
            log.info(rb.toString());
        } else if(str.size()==4){
            rb.setName(str.get(0));
            rb.setDescriber(str.get(3));
            log.info(rb.toString());
        }
        return rb;
    }

    public RuleBase arrangementRuleValue(List<String> str, RuleBase rb) {
        if(str.size()==3) {
            RuleValue rv = new RuleValue();
            rv.setValueName(str.get(1));
            List<RuleValue> rlist = new ArrayList<>();
            rlist.add(rv);
            rb.setRuleValues(rlist);
            log.info(rb.toString());
        } else if(str.size()==4) {
            RuleValue rv = new RuleValue();
            rv.setValueName(str.get(1));
            rv.setValueDescriber(str.get(2));
            List<RuleValue> vlist = new ArrayList<>();
            vlist.add(rv);
            rb.setRuleValues(vlist);
            log.info(rb.toString());
        }
        return rb;
    }

    @RequestMapping(method = {RequestMethod.GET, RequestMethod.POST},value = "addRuleExcel/**")
    public String addRuleExcel(MultipartFile filePath, Integer type) {
        log.info(">>>>>>>>>>>>>>>>>>>>>>>>>"+type);
        ReadExcelUtils(filePath);
        //枚举型文件的添加
        if(type.equals(Constant.DQ_ENUMTYPE)){
            String eRuleBaseName = new String();
            Integer oldId = 0;
            for(List<String> str : list) {
                RuleBase ruleBase = arrangementRuleBase(str);
                ruleBase.setType(type);
                Integer id = 0;
                log.info(eRuleBaseName+oldId);
                if(ruleBase.getName().equals(eRuleBaseName)) {
                    id = oldId;
                } else {
                    ruleBaseService.save(ruleBase);
                    id=ruleBase.getId();
                    oldId = id;
                    eRuleBaseName = ruleBase.getName();
                }
                log.info(eRuleBaseName+oldId);
                ruleBase = arrangementRuleValue(str, ruleBase);
                for (RuleValue ruleValue:ruleBase.getRuleValues()) {
                    ruleValue.setRuleId(id);
                    log.info(">>>>>>>>>>>>>>>>.................."+ruleValue);
                    ruleValueService.addValue(ruleValue);
                }
                log.info("*******-------*****"+ruleBase);
                log.info("*******-------*****"+new JsonMapper().toJson(ruleBase));
            }
            return "redirect:/dataQuality/ruleIndex/?type="+Constant.DQ_ENUMTYPE;
        }
        //正则型文件的添加
        if(type.equals(Constant.DQ_REGULARTYPE)){
            for(List<String> str : list) {
                RuleBase ruleBase = arrangementRuleBase(str);
                ruleBase.setType(type);
                ruleBaseService.save(ruleBase);
                Integer id=ruleBase.getId();
                ruleBase = arrangementRuleValue(str, ruleBase);
                for (RuleValue ruleValue:ruleBase.getRuleValues()) {
                    ruleValue.setRuleId(id);
                    ruleValueService.addValue(ruleValue);
                }
                log.info("*******-------*****"+ruleBase);
            }
            return "redirect:/dataQuality/ruleIndex/?type="+Constant.DQ_REGULARTYPE;
        }
        //值域型文件的添加
        if(type.equals(Constant.DQ_RANGETYPE)){
            for(List<String> str : list) {
                RuleBase ruleBase = arrangementRuleBase(str);
                ruleBase.setType(type);
                ruleBaseService.save(ruleBase);
                Integer id=ruleBase.getId();
                ruleBase = arrangementRuleValue(str, ruleBase);
                for (RuleValue ruleValue:ruleBase.getRuleValues()) {
                    ruleValue.setRuleId(id);
                    log.info(">>>>>>>>>>>>>>>>.................."+ruleValue);
                    ruleValueService.addValue(ruleValue);
                }
                log.info("*******-------*****"+ruleBase);
            }
            return "redirect:/dataQuality/ruleIndex/?type="+Constant.DQ_RANGETYPE;
        }
        //基准值型文件的添加
        if(type.equals(Constant.DQ_STANDARDTYPE)){
            for(List<String> str : list) {
                RuleBase ruleBase = arrangementRuleBase(str);
                ruleBase.setType(type);
                log.info(ruleBase);
                ruleBaseService.save(ruleBase);
                Integer id=ruleBase.getId();
                log.info(">>>>>>>>>>>>>>>>>>>"+id);
                ruleBase = arrangementRuleValue(str, ruleBase);
                log.info(ruleBase);
                for (RuleValue ruleValue:ruleBase.getRuleValues()) {
                    ruleValue.setRuleId(id);
                    ruleValueService.addValue(ruleValue);
                }
                log.info("*******-------*****"+ruleBase);
            }
            return "redirect:/dataQuality/ruleIndex/?type="+Constant.DQ_STANDARDTYPE;
        }
        return "redirect:/dataQuality/ruleIndex/?type="+Constant.DQ_ENUMTYPE;
    }

}

 

 

声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,转载请指明出处!

 

标签:info,log,ruleBase,数据库,excel,str,type,import,上传
From: https://www.cnblogs.com/zhihuifan10/p/18292062

相关文章

  • Excel表格如何免费转成PDF的3种方法
    很多时候我们会将各种各样的文档转换成pdf的格式,然后发送给别人,因为pdf格式在阅读上既能保持很好的效果,又不会编辑到里面的内容,那么要怎么excel表格转换成pdf呢?方法一:使用Excel软件自带的“另存为”功能大多数版本的MicrosoftExcel都提供了将文档另存为PDF的功能,这是最简单直接......
  • 数据库范式
    1范式的基本概念设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。函数依赖比如......
  • sybase数据库恢复
    Sybase数据库的恢复过程可以因不同的故障类型和数据损坏程度而有所不同。以下是一个一般性的恢复步骤和策略,但请注意,这些方法并不能保证百分之百的成功,特别是在数据严重损坏或没有适当备份的情况下。一、备份数据在进行任何恢复操作之前,首先确保对现有的数据库和相关文件进行完......
  • Interbase数据库修复
    一、准备阶段备份数据库:在进行任何修复操作之前,务必先对受损的数据库进行完整备份。这是防止在修复过程中数据进一步丢失或损坏的重要步骤。使用Interbase提供的备份工具(如gbak)或第三方备份工具进行备份。断开连接:确保没有任何程序或用户正在访问或使用该数据库,以避免在修复......
  • Firebird数据库修复
    一、前期准备断开数据库连接:确保所有与Firebird数据库的连接都已断开,避免在修复过程中发生数据冲突或损坏。备份数据库:在进行任何修复操作之前,使用Firebird提供的gbak工具或其他备份工具对数据库进行完整备份。备份文件将在修复过程中起到关键作用,以防修复失败导致数据丢失。......
  • InterBase数据库文件损坏的修复方法
    InterBase数据库是一种中级数据库,它短小精悍免维护,可以满足百万记录级别的数据库应用,又有开放源码版本,个人认为是一种比较适合中小型数据库应用环境的数据库管理系统(DBMS)。Delphi内建了对InterBase数据库的支持,因此用Delphi编写以InterBase为后台数据库的软件很是方便。在实际应......
  • 使用Mybatis框架操作数据库
    --------------idea中创建springboot项目引入Mybatis框架-----------------1、新建空项目2.创建模块3.选择springboot版本,添加mybatisframework框架和Mysqldriver驱动 4.删除多余文件 5.选择父工程中选择spring-boot版本6.选择依赖版本号(1)mybatis的起步依赖......
  • 详解Web应用安全系列(10)文件上传漏洞
    文件上传漏洞(FileUploadVulnerabilities)是Web攻击中常见的一种安全漏洞,它允许攻击者上传并执行恶意文件,从而可能对Web服务器造成严重的安全威胁。一、定义与原理文件上传漏洞是指Web应用程序在处理用户上传的文件时,由于缺乏对上传文件的类型、大小、内容等属性的严格检查和......
  • 服务器数据库OAERP报错
    一、常见原因网络问题:网络延迟、网络阻塞或网络故障都可能导致数据库连接不稳定或中断。防火墙或路由器的设置不当也可能阻止ERP系统与数据库之间的正常通信。数据库配置问题:数据库服务器的IP地址、端口号、用户名和密码等配置信息错误或不一致。数据库服务器的配置参数设置......
  • 如何解决数据库配置问题
    识别配置问题收集错误信息:首先,收集数据库配置过程中出现的所有错误信息和日志。这些信息通常会在数据库服务器的日志文件、系统日志或应用程序日志中记录。分析问题性质:分析错误信息以确定问题的性质。这可能涉及检查数据库连接问题、性能瓶颈、配置参数不当等。检查配置文......