【开发日记】Java读取Excel文件数据

【开发日记】Java读取Excel文件数据

记录一个Excel文件读取的工具类,相信不少朋友都在开发时,处理Excel文件时不知如何解决。下面就看一下这个问题如何解决。

分享一下我的解决方案第一步先创建一个Excel文件,在其中添加内容第二步导入依赖当然你也可以使用其他版本,旧版本的Excel使用的依赖不是同一个

代码语言:javascript复制

org.apache.poi

poi

4.1.2

org.apache.poi

poi-ooxml

4.1.2

接下来写一个main函数代码语言:javascript复制public static void main(String[] args) {

try {

// 1. 通过文件路径创建文件输入流

FileInputStream fileInputStream = new FileInputStream(new File("D:\\work\\javassit\\IndividualTest\\newExcel.xlsx"));

// 2. 创建工作簿对象

Workbook workbook = new XSSFWorkbook(fileInputStream);

// 3. 获取第一个工作表

Sheet sheet = workbook.getSheetAt(0);

// 4. 迭代每一行

for (Row row : sheet) {

// 5. 迭代每一列

for (Cell cell : row) {

// 6. 根据单元格类型读取数据

switch (cell.getCellType()) {

case STRING:

System.out.print(cell.getStringCellValue() + "\t");

break;

case NUMERIC:

System.out.print(cell.getNumericCellValue() + "\t");

break;

case BOOLEAN:

System.out.print(cell.getBooleanCellValue() + "\t");

break;

case BLANK:

System.out.print("BLANK\t");

break;

default:

System.out.print("UNKNOWN\t");

}

}

System.out.println(); // 换行

}

// 7. 关闭文件输入流

fileInputStream.close();

// 8. 关闭工作簿

workbook.close();

} catch (IOException e) {

e.printStackTrace();

}

}测试一下,结果打印正常接下来将它封装为一个工具类,请求参数为文件地址返回参数为一个list代码语言:javascript复制 /**

* 读取excel数据写到集合中

* @param excelFilePath 文件地址

* @return

*/

static List> readExcel(String excelFilePath) {

// 存储Excel数据的List

List> excelData = new ArrayList<>();

try (FileInputStream fis = new FileInputStream(excelFilePath);

XSSFWorkbook workbook = new XSSFWorkbook(fis)) {

// 仅处理第一个Sheet

Iterator rowIterator = workbook.getSheetAt(0).iterator();

// 迭代处理每一行

while (rowIterator.hasNext()) {

Row row = rowIterator.next();

Iterator cellIterator = row.iterator();

// 存储一行数据的List

List rowData = new ArrayList<>();

// 迭代处理每个单元格

while (cellIterator.hasNext()) {

Cell cell = cellIterator.next();

// 将所有单元格的内容转为String类型

rowData.add(cellToString(cell));

}

// 将一行数据添加到总数据List中

excelData.add(rowData);

}

} catch (Exception e) {

e.printStackTrace();

}

return excelData;

}

/**

* 将单元格内容转为String

* @param cell 单个单元格对象

* @return

*/

private static String cellToString(Cell cell) {

//获取 Excel 单元格的数据类型

switch (cell.getCellType()) {

//字符串类型

case STRING:

return cell.getStringCellValue();

//数字类型(包括日期和时间)

case NUMERIC:

return Double.toString(cell.getNumericCellValue());

//布尔类型

case BOOLEAN:

return Boolean.toString(cell.getBooleanCellValue());

//单元格为空

case BLANK:

return "";

//其他类型

default:

return "";

}

}

测试一下工具类。代码语言:javascript复制 public static void main(String[] args) {

//读取excel数据写到集合中

List> excelData = readExcel("D:\\work\\javassit\\IndividualTest\\newExcel.xlsx");

// 打印读取的数据

for (List row : excelData) {

for (String cellValue : row) {

System.out.print(cellValue + "\t");

}

System.out.println();

}

}结果也正常。你也可以将它进行改造,使它符合你需要的功能。

相关数据

广州水疗推荐:带你寻找最好的水疗场所
365BET是不是上市了

广州水疗推荐:带你寻找最好的水疗场所

⌛ 08-13 👁️‍🗨️ 8087
忠字辈男孩名字大全
mobileBET365

忠字辈男孩名字大全

⌛ 09-29 👁️‍🗨️ 8674
万方数据知识服务平台
365BET是不是上市了

万方数据知识服务平台

⌛ 09-03 👁️‍🗨️ 2490
免费AI颜值测试的优势
mobileBET365

免费AI颜值测试的优势

⌛ 07-13 👁️‍🗨️ 8718