运用gson将每个表格第一行作为列名
public static JsonObject getExcelDataAsJsonObject(File excelFile) {
JsonObject sheetsJsonObject = new JsonObject();
Workbook workbook = null;
try {
workbook = new XSSFWorkbook(excelFile);
} catch (InvalidFormatException | IOException e) {
TestLogUtils.logErrorMessage(
"ExcelUtils -> getExcelDataAsJsonObject() :: Exception thrown constructing XSSFWorkbook from provided excel file. InvalidFormatException | IOException => "
+ TestLogUtils.convertStackTraceToString(e));
}
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
JsonArray sheetArray = new JsonArray();
ArrayList<String> columnNames = new ArrayList<String>();
Sheet sheet = workbook.getSheetAt(i);
Iterator<Row> sheetIterator = sheet.iterator();
while (sheetIterator.hasNext()) {
Row currentRow = sheetIterator.next();
JsonObject jsonObject = new JsonObject();
if (currentRow.getRowNum() != 0) {
for (int j = 0; j < columnNames.size(); j++) {
if (currentRow.getCell(j) != null) {
if (currentRow.getCell(j).getCellTypeEnum() == CellType.STRING) {
jsonObject.addProperty(columnNames.get(j), currentRow.getCell(j).getStringCellValue());
} else if (currentRow.getCell(j).getCellTypeEnum() == CellType.NUMERIC) {
jsonObject.addProperty(columnNames.get(j), currentRow.getCell(j).getNumericCellValue());
} else if (currentRow.getCell(j).getCellTypeEnum() == CellType.BOOLEAN) {
jsonObject.addProperty(columnNames.get(j), currentRow.getCell(j).getBooleanCellValue());
} else if (currentRow.getCell(j).getCellTypeEnum() == CellType.BLANK) {
jsonObject.addProperty(columnNames.get(j), "");
}
} else {
jsonObject.addProperty(columnNames.get(j), "");
}
}
sheetArray.add(jsonObject);
} else {
// store column names
for (int k = 0; k < currentRow.getPhysicalNumberOfCells(); k++) {
columnNames.add(currentRow.getCell(k).getStringCellValue());
}
}
}
sheetsJsonObject.add(workbook.getSheetName(i), sheetArray);
}
return sheetsJsonObject;
}