添加依赖:在 pom.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 中。
示例代码
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 文件路径。