Прочитайте Excel как код ниже.поместите первый столбец в карту с ключом «столбцы» после чтения Excel, извлеките список столбцов с помощью
Список столбцов = (Список) dataList.get (0) .get («столбцы»);
public List<HashMap<String, Object>> readExcel(InputStream inputStream, String dateFormat) {
ArrayList<HashMap<String, Object>> result = new ArrayList<HashMap<String, Object>>();
try {
XSSFWorkbook workbook;
workbook = new XSSFWorkbook(inputStream);
XSSFSheet spreadsheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = spreadsheet.iterator();
int c = 0;
ArrayList<String> columns = new ArrayList<String>();
while (rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
HashMap<String, Object> map = new HashMap<String, Object>();
if (c == 0) {
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
if (cell.getStringCellValue().trim() != null && !cell.getStringCellValue().trim().equals("")) {
columns.add(cell.getStringCellValue().trim());
}
}
} else {
for (int i = 0; i < columns.size(); i++) {
Cell cell = row.getCell(i);
if (cell != null) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellInternalDateFormatted(cell)) {
DateFormat df = new SimpleDateFormat(dateFormat);
map.put(columns.get(i), df.format(cell.getDateCellValue()));
break;
} else {
map.put(columns.get(i), cell.getNumericCellValue());
break;
}
case Cell.CELL_TYPE_STRING:
map.put(columns.get(i), cell.getStringCellValue().trim());
break;
}
} else {
map.put(columns.get(i), "");
}
}
}
if (c == 0) {
map.put("columns", columns);
}
c++;
if (!isEmptyRow(map)) {
map.put("rowNumber", c);
result.add(map);
}
}
inputStream.close();
return result;
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}