解析Excel表格内容(不保存文件)

本文介绍了一种使用Java解析Excel文件并将数据保存到数据库的方法。通过上传Excel表格,利用org.apache.poi库读取表格内容,遍历每张工作表和每一行数据,将数据转换为实体类并保存至数据库。

解析Excel

上传Excel表格,将表格内容保存到数据库,直接上代码。

import java.io.IOException;
import java.io.InputStream;
import org.springframework.web.multipart.MultipartFile;
import org.apache.poi.ss.usermodel.*;

@ResponseBody
    @RequestMapping(value = "/parseWorkers", produces = "application/json; charset=utf-8")
    public ModelAndView parseExcel(MultipartFile wordersFile){

        int totalNum = 0;//导入成功条数
        long size = wordersFile.getSize();

        InputStream is = null;
        Workbook wb = null;
        //Excel表格大小设置:小于2m
        if((size/1024) < 2048){
            try {
                is = wordersFile.getInputStream();
                wb = WorkbookFactory.create(is);
				//表格下方的张数
                int num = wb.getNumberOfSheets();
                for (int i = 0; i < num; i++) {
                    Sheet sheet = wb.getSheetAt(i);
                    //获取表格列数
                    int rows = sheet.getPhysicalNumberOfRows();
                    for (int j = 1; j < rows; j++) {
                        try{
                            Row row = sheet.getRow(j);
                            //int cells = row.getPhysicalNumberOfCells();
                            //表格行数,从0开始为第一个
                            Cell cell1 = row.getCell(0);
                            //数据库中第一位为int类型,所以将cell1 转为Integer 类型的m
                            double d=Double.parseDouble(String.valueOf(cell1));
                         	Integer m=(int)d;
                            Cell cell2 = row.getCell(1);
                            Cell cell3 = row.getCell(2);
                            Cell cell4 = row.getCell(3);
                            Cell cell5 = row.getCell(4);
                            Cell cell6 = row.getCell(5);
                           //把表格内容set进实体类中 
                     		FileEntity entity = new FileEntity();
                     		//这里都用name代替
                     		entity.setId(String.valueOf(m));
                     		entity.setName1(String.valueOf(cell2));
                     		entity.setName2(String.valueOf(cell3));
                     		entity.setName3(String.valueOf(cell4));
                     		entity.setName4(String.valueOf(cell5));
                     		entity.setName5(String.valueOf(cell6));
                     		//将数据保存到数据库,该方法不在提供
                            int res=userSalaryService.add(entity);
                            ModelAndView modelAndView =new ModelAndView();
							
                            if (res<1){
								modelAndView.addObject("message","数据保存失败");//返回的信息
								modelAndView.setViewName("list");//返回的页面
								return modelAndView;
                            }
                            totalNum++;
                        } catch (Exception e) {
                            e.printStackTrace();
                            continue;
                        }
                    }
                }
            	modelAndView.addObject("message","导入成功!本次共导入"+totalNum+"条数据");//返回的信息
				modelAndView.setViewName("list");//返回的页面
				return modelAndView;
				
            } catch (Exception e) {
            modelAndView.addObject("message","表格解析异常,上传失败");//返回的信息
			modelAndView.setViewName("list");//返回的页面
			return modelAndView;
               
            }finally{
                try {
                    if(wb != null){
                        wb.close();
                    }
                    if(is!= null){
                        is.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
		modelAndView.addObject("message","文件超过最大限制");//返回的信息
		modelAndView.setViewName("list");//返回的页面
		return modelAndView;            

        }
    }

简单的实现了表格的解析和保存到数据库的功能,具体保存导数据库的代码并没有贴出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值