java 导入 excel 用 map 接收
时间: 2024-09-20 12:15:50 浏览: 37
在Java中,导入Excel文件并使用Map接收数据通常涉及到Apache POI库,它是处理Microsoft Office格式文档的标准库。以下是一个简单的步骤来实现这个功能:
1. 首先,你需要添加Apache POI依赖到你的项目中,如果你使用的是Maven,可以在pom.xml里加入:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>最新版本号</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>最新版本号</version>
</dependency>
```
2. 使用`XSSFWorkbook`打开Excel文件:
```java
import org.apache.poi.ss.usermodel.*;
Workbook workbook = new XSSFWorkbook(new File("path_to_your_excel_file.xlsx"));
```
3. 创建一个Map来存储数据,例如每行对应一个Key-value对:
```java
Map<String, List<Object>> dataMap = new HashMap<>();
```
4. 遍历工作表的每个sheet:
```java
for (Sheet sheet : workbook.getSheets()) {
for (Row row : sheet) {
// 获取当前行的索引(从0开始)
int rowIndex = row.getRowNum();
// 创建一个List来保存列值,假设第一列作为key,其他列为value
List<Object> rowData = new ArrayList<>();
// 遍历列(假设A列是key,B、C列是value)
for (Cell cell : row) {
switch (cell.getColumnIndex()) {
case 0:
rowData.add(cell.getStringCellValue());
break;
case 1:
rowData.add(cell.getNumericCellValue()); // 如果是数字类型
case 2:
rowData.add(cell.getDateCellValue()); // 如果是日期类型
default:
rowData.add(cell.toString()); // 其他默认转字符串
}
}
// 将当前行的数据放入Map,key通常是第一列的内容,value是第二列和第三列等
if (!dataMap.containsKey(rowData.get(0))) {
dataMap.put(rowData.get(0), rowData.subList(1, rowData.size()));
} else {
dataMap.get(rowData.get(0)).addAll(rowData.subList(1, rowData.size()));
}
}
}
```
5. 最后关闭workbook以释放资源:
```java
workbook.close();
```
阅读全文