gpt4 book ai didi

java - 将行映射到多个工作表中的行

转载 作者:行者123 更新时间:2023-12-01 14:59:02 25 4
gpt4 key购买 nike

我需要读取包含 3 个工作表的 Excel 文件,并且需要按如下方式表示数据:例​​如,每行跨越所有 3 个工作表

row1 = sheet[0].getRow(1) +  sheet[1].getRow(1) + sheet[2].getRow(1)

下面是我到目前为止所做的,但正如您所看到的,行是按工作表定义的,这是错误的,我也需要它从其他工作表获取数据。如何优雅地做到这一点?

LinkedHashMap<String, List<LinkedHashMap<String, Object>>> records = 
new LinkedHashMap<String, List<LinkedHashMap<String, Object>>>();
for (int sIndex = 0; sIndex < wb.getNumberOfSheets(); sIndex++) {
// System.out.println(sIndex);
Sheet sheet = wb.getSheetAt(sIndex);
String key;
String value = null;
List<LinkedHashMap<String, Object>> sheetRecords = new ArrayList<LinkedHashMap<String, Object>>();
for (Row row : sheet) {

LinkedHashMap<String, Object> record = new LinkedHashMap<>();
for (Cell cell : row) {

switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
key = sheet.getRow(sheet.getFirstRowNum())
.getCell(cell.getColumnIndex()).toString();
value = cell.getStringCellValue();
record.put(key, value);
sheetRecords.add(record);
break;
case Cell.CELL_TYPE_NUMERIC:
key = sheet.getRow(sheet.getFirstRowNum())
.getCell(cell.getColumnIndex()).toString();
double number = cell.getNumericCellValue();

record.put(key, number);
sheetRecords.add(record);
case Cell.CELL_TYPE_BLANK:
break;
default:
break;
}

}

}

records.put(sheet.getSheetName(), sheetRecords);

}

最佳答案

您必须使用外部 for 循环按索引迭代行。在伪代码中:

maxRows := firstSheetInWorkbook->getNumberOfRows();
for (row := 0..maxRows)
rowResult := new RowResult
for (sheet := 0..maxSheets)
rowResult->add(processRowForSheet(row, sheet))

关于java - 将行映射到多个工作表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com