添加依赖:在 pom.xml 文件中添加以下依赖:
xml
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
</dependencies>
编写 Java 代码:使用 Apache POI 读取 Excel 文件,并将第一列和第二列的数据存储到 Map 中。
示例代码
java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ExcelReader {
public static Map<String, String> readExcelToMap(String filePath) throws IOException {
Map<String, String> map = new HashMap<>();
try (FileInputStream fis = new FileInputStream(new File(filePath));
Workbook workbook = new XSSFWorkbook(fis)) {
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 遍历每一行
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
if (row != null) {
// 获取第一列单元格
Cell keyCell = row.getCell(0);
// 获取第二列单元格
Cell valueCell = row.getCell(1);
if (keyCell != null && valueCell != null) {
// 获取键和值
String key = getCellValueAsString(keyCell);
String value = getCellValueAsString(valueCell);
// 将键值对添加到 Map 中
map.put(key, value);
}
}
}
}
return map;
}
private static String getCellValueAsString(Cell cell) {
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
return cell.getDateCellValue().toString();
} else {
return String.valueOf((long) cell.getNumericCellValue());
}
case BOOLEAN:
return String.valueOf(cell.getBooleanCellValue());
case FORMULA:
return cell.getCellFormula();
default:
return "";
}
}
public static void main(String[] args) {
String filePath = "path/to/your/excel/file.xlsx";
try {
Map<String, String> resultMap = readExcelToMap(filePath);
// 打印 Map 中的键值对
for (Map.Entry<String, String> entry : resultMap.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码解释
readExcelToMap 方法:
该方法接受一个 Excel 文件的路径作为参数,返回一个 Map<String, String> 对象。
使用 FileInputStream 读取 Excel 文件,并使用 XSSFWorkbook 创建一个工作簿对象。
获取第一个工作表,并遍历每一行。
对于每一行,获取第一列和第二列的单元格,并将其值作为键值对添加到 Map 中。
getCellValueAsString 方法:
该方法用于将单元格的值转换为字符串类型。
根据单元格的类型(如字符串、数字、布尔值、公式等),采用不同的方式获取其值。
main 方法:
调用 readExcelToMap 方法读取 Excel 文件,并将结果存储在 resultMap 中。
遍历 resultMap,打印其中的键值对。
注意事项
上述代码假设 Excel 文件是 .xlsx 格式,如果是 .xls 格式,需要将 XSSFWorkbook 替换为 HSSFWorkbook。
请将 filePath 替换为实际的 Excel 文件路径。