java遍历excel 表格
package 工具类;import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;/*** 导入excel帮助类*/
public class ExcelUtil {/*** 导入excel表格 返回表格数据* @param file* @return 表格数据*/public static ArrayList<ArrayList<Object>> ImportExcel(MultipartFile file){ObjectMapper objectMapper =new ObjectMapper();String array = "[\"0\",\"1\"]";try {InputStream inputStream =file.getInputStream();//获取前端传递过来的文件对象,存储在“inputStream”中String fileName = file.getOriginalFilename();//获取文件名Workbook workbook =null; //用于存储解析后的Excel文件//判断文件扩展名为“.xls还是xlsx的Excel文件”,因为不同扩展名的Excel所用到的解析方法不同String fileType = fileName.substring(fileName.lastIndexOf("."));if(".xls".equals(fileType)){workbook= new HSSFWorkbook(inputStream);//HSSFWorkbook专门解析.xls文件}else if(".xlsx".equals(fileType)){workbook = new XSSFWorkbook(inputStream);//XSSFWorkbook专门解析.xlsx文件}ArrayList<ArrayList<Object>> list =new ArrayList<>();Sheet sheet ; //工作表Row row; //行Cell cell; //单元格//循环遍历,获取数据for(int i=0;i<workbook.getNumberOfSheets();i++){sheet=workbook.getSheetAt(i);//获取sheetfor(int j=sheet.getFirstRowNum();j<=sheet.getLastRowNum();j++){//从有数据的第行开始遍历row=sheet.getRow(j);if(row!=null&&row.getFirstCellNum()!=j){ //row.getFirstCellNum()!=j的作用是去除首行,即标题行,如果无标题行可将该条件去掉ArrayList tempList =new ArrayList();for(int k=row.getFirstCellNum();k<row.getLastCellNum();k++){//这里需要注意的是getLastCellNum()的返回值为“下标+1”cell =row.getCell(k);tempList.add(cell);}list.add(tempList);}}}// System.out.println("我是读取的字符串:"+nativeStr);
// System.out.println("我是读取的数组:"+arrayList.toString());System.out.println("我是解析的Excel:"+list.toString());return list;} catch (IOException e) {e.printStackTrace();}return null;}}
遍历
@ResponseBody@RequestMapping(value = "/importExcel.do",method = {RequestMethod.POST})public ActionResult importData(MultipartFile file, String activeId, String deptId, HttpServletRequest request) throws Exception{//解析表格数据ArrayList<ArrayList<Object>> excelList = ExcelUtil.ImportExcel(file);if (excelList == null || excelList.isEmpty()){return new ActionResult("Excel表格数据为空",false);}List<ZSzpbGrCpcj> cpcjList = new ArrayList<>();for ( ArrayList<Object> obj:excelList){ZSzpbGrCpcj grCpcj = new ZSzpbGrCpcj();XSSFCell id = (XSSFCell)obj.get(0);DataFormatter formatter = new DataFormatter();String valueOfCell = formatter.formatCellValue(id);grCpcj.setId(valueOfCell);XSSFCell userName = (XSSFCell)obj.get(1);grCpcj.setUserName( userName.getStringCellValue());XSSFCell dw = (XSSFCell)obj.get(2);grCpcj.setDw(dw.getStringCellValue());XSSFCell dxpgcj = (XSSFCell)obj.get(3);//定性评估grCpcj.setDxpgcj(dxpgcj.getNumericCellValue());XSSFCell mzcp = (XSSFCell)obj.get(4);//民主测评成绩grCpcj.setMzcpcj(mzcp.getNumericCellValue());XSSFCell zhcj = (XSSFCell)obj.get(5);//综合成绩grCpcj.setZhpjcj(zhcj.getNumericCellValue());XSSFCell tjcj = (XSSFCell)obj.get(6);//推荐结果grCpcj.setTjjg(tjcj.getStringCellValue());cpcjList.add(grCpcj);}List<ZSzpbGrCpcj> ActiveScoreList = getDao().getCpcjByActiveId(activeId);//定义一个list,错误数据集合,最后统一写入excel中,List<ZSzpbGrCpcj> errorList = new ArrayList();//判断是否存在错误数据的flagboolean errorFlag = false;boolean tempFlag = false;//判断是否重复的mapHashMap<String,Object> mapTemp = new HashMap<String,Object>();//计划评比部门人员集合HashMap<String,String> userTemp = new HashMap<String,String>();//excel表格解析数据Iterator<ZSzpbGrCpcj> iterator = cpcjList.iterator();//user 对象数据List<CpcjUserVo> userList = getDao().getUserByDeptName(deptId);for (ZSzpbGrCpcj bean : ActiveScoreList) {mapTemp.put(bean.getUserName()+bean.getDw(),bean);}for(CpcjUserVo user:userList){userTemp.put(user.getUserName()+user.getDeptName(),"1");}while (iterator.hasNext()) {String errorMsg = "";ZSzpbGrCpcj next = iterator.next();next.setHdId(activeId);next.setDw(deptId);String nextId = next.getId();if(!userTemp.containsKey(next.getUserName()+next.getDw())){tempFlag = true;errorFlag = true;errorMsg += "该部门人员不在此次计划评比中,";next.setErrorMsg(errorMsg);System.out.println(next.getUserName() + errorMsg);errorList.add(next);continue;}if(mapTemp.containsKey(next.getUserName()+next.getDw())){ZSzpbGrCpcj zz = (ZSzpbGrCpcj) mapTemp.get(next.getUserName()+next.getDw());next.setId(zz.getId());next.setUserId(zz.getUserId());//数据重复,更新操作//updateMap<String,Object> map = verifyWay(next,errorMsg,tempFlag);errorMsg = map.get("errorMsg").toString();tempFlag = (boolean) map.get("tempFlag");if(tempFlag){errorFlag = true;tempFlag = false;//errorlist 添加操作next.setId(nextId);System.out.println("update_nextId:"+nextId);next.setErrorMsg(errorMsg);errorList.add(next);errorMsg="";continue;}else{//验证通过//save方法存库,当前一条数据System.out.println("update:"+next.toString());getDao().update(next);}}else{mapTemp.put(next.getUserName()+next.getDw(),next);//数据不重复,新增操作//验证开始//判断人员及所在部门是否属于此次评比部门中的人,不是,错误信息记录//验证得分是否正常数值,错误的都记录指errorList中//验证方法 :民主测评成绩,定性评估成绩,综合评价成绩,推荐结果 验证Map<String,Object> map = verifyWay(next,errorMsg,tempFlag);errorMsg = (String) map.get("errorMsg");tempFlag = (boolean) map.get("tempFlag");if(tempFlag){errorFlag = true;tempFlag = false;//errorlist 添加操作next.setErrorMsg(errorMsg);System.out.println("add_nextId::"+nextId);next.setId(nextId);errorList.add(next);errorMsg="";continue;}else{//验证通过//save方法存库,当前一条数据System.out.println("save:"+next.toString());next.setId(null);getDao().save(next);}}}List<CpcjExcelEntity> excelEntityList = new ArrayList<>();for (ZSzpbGrCpcj grCpcj : errorList){//excel生成实体CpcjExcelEntity excelEntity = new CpcjExcelEntity();excelEntity.setId(grCpcj.getId());excelEntity.setMzcpcj(grCpcj.getMzcpcj());excelEntity.setDw(grCpcj.getDw());excelEntity.setErrorMsg(grCpcj.getErrorMsg());excelEntity.setDxpgcj(grCpcj.getDxpgcj());excelEntity.setZhpjcj(grCpcj.getZhpjcj());excelEntity.setTjjg(grCpcj.getTjjg());excelEntity.setUserName(grCpcj.getUserName());excelEntityList.add(excelEntity);}String url = request.getSession().getServletContext().getRealPath("/download/szpb/"+IDUtil.randomUUID()+".xlsx");Map<String,Object> map = new HashMap<>();//将错误errorList数据放入excel的DOM返回//返回值,提示及EXCEL,errorFlag有错误时,提示导入成功,但又错误,下载excel。errorFlag无错误时,提示导入成功if(errorList!=null && errorList.size()>0){//excel对象操作String[] headers = {"序号", "用户名称","单位","定性评估成绩","民主测评成绩","综合评估成绩","推荐结果"};ImportExcelUtil.export(headers,excelEntityList,url);System.out.println("excel表格生成"+errorList.size()+"条数据!");String ExcelUrl = url.substring(url.indexOf("download"));System.out.println(ExcelUrl);map.put("url",ExcelUrl);return new ActionResult("加载成功", map);}map.put("scoer",excelEntityList);//成功导入失败excel数据return new ActionResult("加载成功", map);}
java遍历excel 表格相关推荐
- java 浏览器 excel导出excel_使用Java导出Excel表格并由浏览器直接下载——基于POI框架...
非异步方法 /** * 使用Java导出Excel表格并由浏览器直接下载--基于POI框架 * * @param response * @return * @throws IllegalAccessE ...
- JAVA读取Excel表格,建数据库建表,并生成java实体实例
转自:https://blog.csdn.net/wuyongde_0922/article/details/43233413 JAVA读取Excel表格,建数据库建表,并生成java实体实例,这一篇 ...
- Java导出Excel表格出现文件损坏异常解决方案
Java导出Excel表格出现文件损坏异常解决方案 问题出现 问题出现 本人遇到这个问题,由于是第一次见,感觉无从下手.但是导出功能很常见,做的也很多,只有这个出现了文件损坏,那很可能是代码写的有问题 ...
- java访问excel表格_Java读取excel表格(示例代码)
Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...
- Java 操作excel表格 - JXL(Java excel api)
Java 操作excel表格 Java 操作 Excel 最常用的就是JXL(Java excel api)和POI,用起来挺简单的,不过相应的其功能也并非很强大,够用就行! 首先,下载jxl.jar ...
- Java对Excel表格的操作
Java对Excel表格的操作 目前软件开发多采用B/S架构.正B/S架构可以给软件的开发部署带来很大的便利,但是与此同时这种架构也带来了一些问题,例如Web报表的处理等,在B/S架构下,客户端的开发 ...
- Java实现Excel表格数据的导入(兼容xls与xlsx)
Java实现Excel表格数据的导入(兼容xls与xlsx) 目录 依赖 代码 注意点 目录 依赖 <!-- 添加POI的依赖用于Excel的操作 --><dependency> ...
- python3遍历电子表格_用openpyxl遍历excel表格
Python的openpyxl模块,提供了对excel表格的读写操作接口.本文介绍使用openpyxl来遍历excel表格. openpyxl支持Excel 2010 xlsx/xlsm/xltx/x ...
- java读写excel表格数据
java读写excel表格数据 java读写excel表格数据 excel类 package excel;import java.io.File; import jxl.Cell; import jx ...
最新文章
- 解决nginx 502 bad gateway--团队的力量
- 二维码检测哪家强?五大开源库测评比较
- Linux下锁用户与解锁问题
- Windows安装Zookeeper和Dubbo(单机版本)
- [转载] 杜拉拉升职记——33 360度评估
- python 面向对象_Python新手入门【面向对象】
- 网站推广——网站推广专员在优化网站中都有哪些技巧呢?
- 使用七牛图片遇到的图片方向翻转问题
- oracle test 卡死,oracle11g plsql调试存储过程卡死的处理技巧
- 关于MYSQL ERROR1045 报错的解决办法
- jQuery特效:动画实现闪烁效果
- [附源码]Java计算机毕业设计SSM大众点评管理系统
- 恒德室内智能照明控制系统电路设计
- OCR识别技术之—车牌识别
- 精选目标检测3——yolo1、yolo2、yolo3和SSD的网络结构汇总对比
- c语言求100以内被7整除的最大自然数,编程,求100以内被7整除的最大自然数
- 科软计算机录取人数,科软是如何用5年时间从招生靠调剂到406名400+大神的?
- IDEA中创建编写JSP
- 迅雷数据平台建设和应用案例
- 剪辑视频调整视频播放倍速,改变视频时长