首先读取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数字类型 格式化就行了