Java中利用POI通过List导出到Excle,将Excle中的数据导入到数据库

Java中利用POI通过List导出到Excle,将Excle中的数据导入到数据库

没接触这个小白可以直接复制代码到方法中只要导了POI这个jar包 修改一下数据库方法和实体类就可以了,实体类的位置和数据库方法的位置我已经标明了,这也是我借鉴别人的方法学习的,我只能帮你们这么多了。。加油

页面部分代码就不写了,就直接一个按钮点击调用controler层中的方法就可以.

下面开始就是java代码了
下面的代码直接复制到方法内就可以用,哦对了,这个是通过POI这个jar包来实现的
jar包可以去maven上直接下载就可以用
首先是导出Excle

   try {
            String filePath="e:/sheet1.xls";//文件路径
            //调用sql
            List<SensitiveWord> list = AsrUtils.ASRDAO.getSENSITIVE_ALL();
            HSSFWorkbook workbook =new HSSFWorkbook();
            //rowNum是起始行
            int rowNum= 0;
            HSSFSheet hssfSheet =workbook.createSheet("asdasd");
            Row row =hssfSheet.createRow(rowNum++);
            //Excle每列的标题
            row.createCell(0).setCellValue("第一列属性名字");
            row.createCell(1).setCellValue("第二列属性名字");
            //通过循环将每一行的数据导出Excle
            if(list!=null&&list.size()>0){
                for (SensitiveWord sensitiveWord :list){
                    Row row1 =hssfSheet.createRow(rowNum++);
                    row1.createCell(0).setCellValue(sensitiveWord.getWord());
                    row1.createCell(1).setCellValue(sensitiveWord.getAuthor());
                }
            }
            FileOutputStream out = new FileOutputStream(filePath);
            //保存Excel文件
            workbook.write(out);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

下面的是导入Excle文件

		//新建一个用来存储对象的LIst集合
		//其中对象的每一个属性以map的键值对关系进行存储	
	    ArrayList<Map<String, String>> mapList = new ArrayList<>();
	    //这个是你要导入的Excle文件路径
        File file = new File("e:/sheet1.xls");
        //判断文件是否存在
        if (file.isFile() && file.exists()) {
            System.out.println(file.getPath());
            //获取文件的后缀名 \\ .是特殊字符
            String[] split = file.getName().split("\\.");
            System.out.println(split[1]);
            //新建一个HSSFWorkbook对象
            HSSFWorkbook wb =new HSSFWorkbook();
            //根据文件后缀(xls/xlsx)进行判断
            if ("xls".equals(split[1])) {
         	 //获取文件流对象
                FileInputStream inputStream = new FileInputStream(file);
             //为上面新建一个HSSFWorkbook对象赋值
                wb = new HSSFWorkbook(inputStream);
            } else {
                System.out.println("文件类型错误");
            }
            //开始解析
            HSSFSheet sheet = wb.getSheetAt(0);
            //第一行是列名,所以从第二行开始遍历
            int firstRowNum = sheet.getFirstRowNum() + 1;
            int lastRowNum = sheet.getLastRowNum();
            //遍历行
            for (int rIndex = firstRowNum; rIndex <= lastRowNum; rIndex++) {
                Map map =new HashMap();
                //获取当前行的内容
                Row row = sheet.getRow(rIndex);
                if (row != null) {
                    int firstCellNum = row.getFirstCellNum();
                    int lastCellNum = row.getLastCellNum();
                    for (int cIndex = firstCellNum; cIndex < lastCellNum; cIndex++) {
                       /* row.getCell(cIndex).setCellType(Cell.CELL_TYPE_STRING);*/
                        //获取单元格的值
                        String value = row.getCell(cIndex).getStringCellValue();
                        System.out.println(value);
                        //获取此单元格对应第一行的值
                        String key = sheet.getRow(0).getCell(cIndex).getStringCellValue();
                        System.out.println(key);
                        //第一行中的作为键,第n行的作为值
                        map.put(key, value);
                        System.out.println(map);
                    }
                }
                mapList.add(map);
                System.out.println("读取成功");
                System.out.println(mapList);
            }
        }
      //通过循环将maplist中的map遍历出来,其中SensitiveWord是一个实体类
      //之后再通过map.get(key)方法得到对象的那个属性的值,key就是文档每一列的列名
        if (mapList!=null&&mapList.size()>0){
            for(Map map : mapList){
                SensitiveWord sensitiveWord =new SensitiveWord();
                sensitiveWord.setWord((String) map.get("word"));
                sensitiveWord.setAuthor((String) map.get("author"));
                //调用sql将对象存到数据库中
                AsrUtils.ASRDAO.setExcle(sensitiveWord);
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值