gpt4 book ai didi

java - 动态读取Excel并存储在 map 中

转载 作者:行者123 更新时间:2023-11-30 05:48:16 24 4
gpt4 key购买 nike

我的要求是动态读取excel并将内容存储在Map中。标题应该是键,相应的列应该是值,这样当我传递键时,我就可以获取单元格值。

我的 Excel 工作表包含可以动态更改的多行和多列。我的目的是用java编写一个通用函数来读取excel并将内容存储在map中。键应该是列标题,值应该是标题的相应单元格值。因此,当我传递标题键时进行检索时,我应该收到相应的单元格值。我的计划是在一个方法中传递行号和键,以便它可以检索与该行相关的相应单元格值以及键

static Map<String> excelMap = new LinkedHashMap<String>();

public static String readWriteExcel(String sheetName) throws EncryptedDocumentException, InvalidFormatException, IOException, JSONException
{
File file = new File("File Path");
FileInputStream inputStream = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inputStream );

Sheet sheet = workbook.getSheet( sheetName );

int rowNumber =0;
int rowCount = sheet.getLastRowNum();
for(int i=1;i<=rowCount;i++){
Row row = sheet.getRow(0);
for(int j=0;j<row.getLastCellNum();j++) {
String key=row.getCell(j).getStringCellValue();
String value=sheet.getRow(rowNumber+1).getCell(j).getStringCellValue();
excelMap.put(key, value);
}
}

}

最佳答案

通过查看代码,我假设存在以下问题:工作表中存在多行,但您仅获取第一行的数据。

解决方案:首先,您需要将所有行数据存储在Map列表中。其中列表索引对应于行号。此外,您也没有在任何地方增加 rowNumber 变量。它始终为 0。为什么不直接使用变量 i 从工作表中获取特定行?

我认为这应该可行。

static List<Map<String, String>> excelData = new ArrayList<HashMap<String, String>>();

public static String readWriteExcel(String sheetName) throws EncryptedDocumentException, InvalidFormatException, IOException, JSONException
{
File file = new File("File Path");
FileInputStream inputStream = new FileInputStream( file );
Workbook workbook = WorkbookFactory.create( inputStream );

Sheet sheet = workbook.getSheet( "sheetName" );
int rowCount = sheet.getLastRowNum();
for(int i=1;i<=rowCount;i++){
Row row = sheet.getRow(0);
Map<String,String> rowData = new HashMap<>();
for(int j=0;j<row.getLastCellNum();j++) {
String key=row.getCell(j).getStringCellValue();
String value=sheet.getRow(i).getCell(j).getStringCellValue();
rowData.put(key, value);
}
excelData.add(rowData);
}

}

关于java - 动态读取Excel并存储在 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54454780/

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