需要Java版本的,每行数据需要单独放在map中
时间: 2024-02-24 14:53:49 浏览: 18
好的,以下是一个将Excel文件内容读取到List<Map<String, Object>>中的Java示例代码:
```java
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ReadExcelToList {
public static void main(String[] args) {
String filePath = "example.xlsx";
try (InputStream is = new FileInputStream(filePath);
Workbook workbook = WorkbookFactory.create(is)) {
Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
List<Map<String, Object>> dataList = new ArrayList<>();
for (int i = 1; i <= sheet.getLastRowNum(); i++) { // 遍历每一行
Row row = sheet.getRow(i);
Map<String, Object> dataMap = new HashMap<>();
for (int j = 0; j < row.getLastCellNum(); j++) { // 遍历每一列
Cell cell = row.getCell(j);
String key = sheet.getRow(0).getCell(j).getStringCellValue(); // 获取列名
Object value = getValue(cell); // 获取单元格的值
dataMap.put(key, value);
}
dataList.add(dataMap);
}
// 输出List中的内容
for (Map<String, Object> dataMap : dataList) {
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + " ");
}
System.out.println();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static Object getValue(Cell cell) {
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue().trim();
case NUMERIC:
return cell.getNumericCellValue();
case BOOLEAN:
return cell.getBooleanCellValue();
case FORMULA:
return cell.getCellFormula();
case BLANK:
return "";
default:
return "";
}
}
}
```
这段代码使用 Apache POI 库来读取 Excel 文件,将每行数据放在一个 Map 中,然后将 Map 放入 List 中。这里假设 Excel 文件中的数据在第一个 Sheet 中,如果需要读取其他 Sheet 的数据,只需要修改代码中的 getSheetAt(0) 方法的参数即可。