java进行excel数据导入数据库 (代码)

博主自己写的微信支付,里面有源码有兴趣的可以看一下

https://blog.csdn.net/weixin_39592397/article/details/85242287

excel导入导出网上参考了一些代码感觉写的都比较复杂,就自己看了一下poi的api自己封装了一段代码(如下)

目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel 

此功能就是poi试下的

POI简介:Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

HSSF - 提供读写Microsoft Excel格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写Microsoft Word格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写Microsoft Visio格式档案的功能。

1.需要jar包

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>

</dependency>

2创建controller类

通过MultipartFile 接收上传的excel文件 

@RequestMapping(value="upload",method=RequestMethod.POST)
    @ResponseBody
    public boolean upload(HttpServletRequest request,
           @RequestParam("file") MultipartFile file) throws Exception {
       //如果文件不为空,写入上传路径
       if(!file.isEmpty()) {
           return importService.ImportEexlService(file);
       }else {
           return false;
        }

    }

3创建service类

    public boolean ImportEexlService(MultipartFile file){
        try {
        //解析xlsx后缀的excel文件 xls后缀的暂时没写
        readXlsx(file.getInputStream());
        } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
        return true;
        }
 

//创建方法 解析excel文件 保存到数据库

public  void readXlsx(InputStream inputStream ) throws IOException{  

//XSSFWorkbook  需要一个inputStream流 在上面我们已经把file转成了流所以现在直接用就可以了
      XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);
      XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);  
        String comcode=null;
        String comname=null;
        String ck_rank=null;
        String ck_score=null;
        String fw_rank=null;
        String fw_score=null;
    //获取第一个Sheet 遍历获取每一行数据
      for(int rowNum = 2; rowNum <= xssfSheet.getLastRowNum(); rowNum++ ){  
    //从第二行开始遍历 
    //取每一行每一列的值
        XSSFRow xssfRow = xssfSheet.getRow(rowNum);  
    //取第一行第一个格的值
        comcode=getValue(xssfRow.getCell(0));
        comname=getValue(xssfRow.getCell(1));
        ck_rank=getValue(xssfRow.getCell(2));
        ck_score=getValue(xssfRow.getCell(3));
        fw_rank=getValue(xssfRow.getCell(4));
        fw_score=getValue(xssfRow.getCell(5));
    //把获取到的数据直接插入到数据库
            String sql=" insert into t_car_service(id,comcode,comname,ck_rank,ck_score,fw_rank,fw_score,create_date) "
          + " values('"+UUID.randomUUID().toString()+"','"+comcode+"','"+comname+"','"+ck_rank+"','"+ck_score+"','"+fw_rank+"','"+fw_score+"',SYSDATE) ";
                importDao.importEexlDao(sql);
        }
   private static String getValue(XSSFCell xssfCell){
        if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){
            return String.valueOf( xssfCell.getBooleanCellValue());
        }else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){
            return String.valueOf( xssfCell.getNumericCellValue());
        }else{
            return String.valueOf( xssfCell.getStringCellValue());
        }
    }

}

 

完结

本文为自己做项目亲自总结

不懂请下方留言

转载请标明地址

导出的话过几天会更新

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值