POI数据导入数据库

前一段时间写了POI的导出数据,发现好多时候也用到导入数据,在此写一下我的实现方式,大家有更好的方案,务必留言~

//(利用MultipartFile实现上传)
@RequestMapping("import")
public String ImportExcel(@RequestParam() MultipartFile uploadFile,HttpServletRequest request) throws Exception{

        //调用这个类(在下面有写到)
        UploadPicture uploadPicture = new UploadPicture();
        // 获得上传的文件
        File target = uploadPicture.upLoadFile(uploadFile, request);

        List<Student> pList = new ArrayList<Student>();
        excelFile = new FileInputStream(target);
        // 将上传的文件放入到工作薄中
        Workbook wb = new HSSFWorkbook(excelFile);
        // 获取sheet页
        Sheet sheetAt = wb.getSheetAt(0);
        // 获取行数
        int rowNum = sheetAt.getLastRowNum() + 1;

        for(int i=1;i<rowNum;i++){

            //得到行
            Row row = sheetAt.getRow(i);
            int lastCellNum = row.getLastCellNum();

            for(int j = 0;j < lastCellNum; j++){
            //循环赋值
                Cell cell = row.getCell(j);
                String cellValue = null;
                switch (cell.getCellType()) {
                case 0:
                    // 判断excel单元格内容的格式,并对其进行转换,转换成数据库里所存储的类型
                    cellValue = String.valueOf((int)cell.getNumericCellValue());
                    break;

                case 1:
                    cellValue = cell.getStringCellValue();
                    break;

                case 2:
                    cellValue = cell.getStringCellValue();
                    break;

                case 3:
                    cellValue = cell.getStringCellValue();
                    break;

                case 4:
                    cellValue = cell.getStringCellValue();
                    break;
                }

                switch (j) {
                case 1:
                    student.setName(cellValue);
                    break;

                case 2:
                    student.setHobby(cellValue);
                    break;

                case 3:
                    student.setRemark(cellValue);
                    break;

                case 4:
                    student.setCls(cellValue);
                    break;
                }
            }
            pList.add(student);
        }

        if(pList.size()>0){
            int sNum = pList.size();
            for(int i=0;i<sNum;i++){
                Student student = pList.get(i);
                service.add(student);
            }
        }

        return "redirect:list.action";
    }
// 文件上传工具
public class UploadPicture {

    public File  upLoadFile(MultipartFile uploadFile,HttpServletRequest request) throws IOException{

        String img=null;
        MultipartFile file = uploadFile;
        @SuppressWarnings("unused")
        String uploadFileName = file.getOriginalFilename();

        InputStream isRef = file.getInputStream();

        String targetDir = request.getSession().getServletContext().getRealPath("upload");


        SimpleDateFormat sdf=new SimpleDateFormat("yyyyy_MM_dd_hh_mm_ss");
        String getDateString=sdf.format(new Date());
        String newFileName=""+getDateString+System.nanoTime();
        File targetFile = new File(targetDir,newFileName);

        IOUtils.copy(isRef, fosRef);
        return targetFile;
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值