@Test public void poi() throws Exception { InputStream inputStream=new FileInputStream("C:\\Users\\Administrator.SKY-20170602BKZ\\Desktop\\111.xlsx"); //整个excel文件 XSSFWorkbook xssfSheets = new XSSFWorkbook(inputStream); //每行的数据存一个list,然后每页的数据存到一个list List<List<String>> result=new ArrayList<List<String>>(); //遍历XSSFWorkbook是否有多个sheet for (XSSFSheet xss:xssfSheets){ //如果当前sheet为空则开始下一次循环 if (xss==null) continue; //循环当前页 获取每一行 for (int rowNum=1;rowNum<=xss.getLastRowNum();rowNum++){ ArrayList<String> rowlist= new ArrayList<String>(); XSSFRow row = xss.getRow(rowNum); short firstCellNum = row.getFirstCellNum(); short lastCellNum = row.getLastCellNum(); //获取每一个单元格 Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()){ Cell next = cellIterator.next(); next.setCellType(Cell.CELL_TYPE_STRING); rowlist.add(next.getStringCellValue()); } result.add(rowlist); } } System.out.println(result); }
原文地址:https://m.aliyun.com/yunqi/articles/369813?spm=a2c41.11123433.0.0
如果poi导入excel表格数据时报出Cannot get a text value from a numeric cell错误
异常描述:在导入excel的时候在获取excel单元格数据的时候会出现Cannot get a text value from a numeric cell的异常抛出。
异常原因:poi读取excel单元格的数据,cell有不同的数据类型(CELL_TYPE_NUMERIC,CELL_TYPE_STRING,CELL_TYPE_FORMULA),如果cell中的数据是数值的话,如果你没有给他设置cell的类型的话。默认会认为是CELL_TYPE_NUMERICl类型,如果从一个NUMBER类型的Cell使用.cell.getStringCellValue()读取出一个字符串就会出错。
解决的方法:在读取数据之前,设置cell的类型为CELL_TYPE_STRING;
cell.setCellType(Cell.CELL_TYPE_STRING);