首先读取excel先将poi包下的jar导入
下面直接写代码了
public class ExcelUtil { /** * 选择某个文件判断其后缀名是否是.xls 或者xlsx,如果是读取其信息 * @throws IOException */ public static List<List<String>> readExcel(File file) { InputStream is; HSSFWorkbook workBook; XSSFWorkbook xssfWorkBook; DecimalFormat format = new DecimalFormat("#");//格式化excel数字类型 List<List<String>> sheetList = new ArrayList<List<String>>(); try { is = new FileInputStream(file); //读取文件 if(file.getName().endsWith(".xls")) { workBook = new HSSFWorkbook(is); //workBoo //遍历每个sheet for (int numberSheet = 0; numberSheet < workBook.getNumberOfSheets(); numberSheet++) { //读取sheet HSSFSheet sheetAt = workBook.getSheetAt(numberSheet); //读取sheet是否存在和是否含有值 if(sheetAt != null && sheetAt.getLastRowNum() > 0) { //读取第一行,第一行为表头信息 HSSFRow hssfRow = sheetAt.getRow(0); short cellLength = hssfRow.getLastCellNum();//获取表格宽度,根据第一行来取 //读取每一行数据,从第二行开始读取 for(int numberCell=1;numberCell <= sheetAt.getLastRowNum();numberCell++) { List<String> cell = new ArrayList<String>(); HSSFRow row = sheetAt.getRow(numberCell);//每行数据 /** * 读取sheet表中的每行数据并判断类型 */ for(int cellNum=0;cellNum<cellLength;cellNum++) { if(row.getCell(cellNum).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { //数字为HSSFCell.CELL_TYPE_NUMERIC或者0 cell.add(format.format(row.getCell(cellNum).getNumericCellValue())); System.out.print(format.format(row.getCell(cellNum).getNumericCellValue())); } else { cell.add(row.getCell(cellNum).toString()); System.out.print(row.getCell(cellNum)); } } sheetList.add(cell); System.out.println(); } } } } else if(file.getName().endsWith(".xlsx")) { xssfWorkBook = new XSSFWorkbook(is); //workBoo //遍历每个sheet for (int numberSheet = 0; numberSheet < xssfWorkBook.getNumberOfSheets(); numberSheet++) { //读取sheet XSSFSheet sheetAt = xssfWorkBook.getSheetAt(numberSheet); //读取sheet是否存在和是否含有值 if(sheetAt != null && sheetAt.getLastRowNum() > 0) { //读取第一行,第一行为表头信息 XSSFRow hssfRow = sheetAt.getRow(0); short cellLength = hssfRow.getLastCellNum();//获取表格宽度,根据第一行来取 //读取每一行数据,从第二行开始读取 for(int numberCell=1;numberCell <= sheetAt.getLastRowNum();numberCell++) { List<String> cell = new ArrayList<String>(); XSSFRow row = sheetAt.getRow(numberCell);//每行数据 /** * 读取sheet表中的每行数据并判断类型 */ for(int cellNum=0;cellNum<cellLength;cellNum++) { if(row.getCell(cellNum).getCellType() == XSSFCell.CELL_TYPE_NUMERIC) { //数字为HSSFCell.CELL_TYPE_NUMERIC或者0 cell.add(format.format(row.getCell(cellNum).getNumericCellValue())); } else { cell.add(row.getCell(cellNum).toString()); } } sheetList.add(cell); } } } } } catch (FileNotFoundException e) { System.out.println(file.getName() + "文件读取异常" + e.getMessage()); } catch (IOException e) { System.out.println(file.getName() + "文件解析错误" + e.getMessage()); } /*System.out.println("-----------------"); for (List<String> list : sheetList) { for (String string : list) { System.out.print(string); } System.out.println(); }*/ return sheetList; } public static void main(String[] args) { File file = new File("E:/test.xlsx"); readExcel(file); } }
其中红色部分为转换代码,方法getCellType()为判断cell表格的数据类型的,如果是0或者HSSFCell.CELL_TYPE_NUMERIC为数字类型,使用上面的 DecimalFormat format = new DecimalFormat("#");//格式化excel数字类型 格式化就行了