gpt4 book ai didi

java - 如何使用 jxl 逐张读取 excel 文件

转载 作者:搜寻专家 更新时间:2023-11-01 02:29:48 24 4
gpt4 key购买 nike

我正在开发一种实用程序,可将 excel 文件从一种格式转换为另一种格式。我被建议使用 jxl 库来满足如下要求。
逐页阅读​​文件并执行以下操作

获取工作表名称,使其成为 map 的键,然后获取其列标题并使其成为值。

结果如下

   Map<String, List<String>> result = result<key=sheetName, value=list of column headers> 

对给定文件中的所有工作表执行此操作

我是按照下面的方式做的

public Map> function(String filePath ) 抛出 IOException, BiffException{

       Map<String, List<String>> map = new HashMap<String, List<String>>(); 
Workbook workBook=Workbook.getWorkbook(new File (filePath));
String [] sheetNames = workBook.getSheetNames();
Sheet sheet=null;
List<String > fields = new ArrayList<String>();
for (int sheetNumber =0; sheetNumber < sheetNames.length; sheetNumber++){
sheet=workBook.getSheet(sheetNames[sheetNumber]);
for (int columns=0;columns < sheet.getColumns();columns++){
fields.add(sheet.getCell(columns, 0).getContents());


}
map.put(sheetNames[sheetNumber],fields);

}
return map;
}

我这样做是为了获得期望的结果,但它的作用是将所有工作表的列标题针对每个键存储为值。即如果文件中有两张名为

  1. 工作表 1
  2. sheet2

下面是他们的列标题

Sheet1 -> id, name
sheet2 -> 类别,价格

然后 map 会像

result<sheet1,<id, name, caegory, price>>
result<sheet2,<id, name, caegory, price>>

不知道我做错了什么?请帮忙,因为我的项目有很多后端计算,我不想在这件事上花很多时间。

任何帮助将不胜感激

最佳答案

我在这里发布后解决了这个问题,但是忘了在这里给出解决方案。
上面代码中的问题是列表声明的位置。
它应该在 for 中声明,以便在每次循环迭代后刷新(清空)并且一次只存储一张表的数据。
正确的代码如下。

      Map<String, List<String>> map = new HashMap<String, List<String>>(); 
Workbook workBook=Workbook.getWorkbook(new File (filePath));
String [] sheetNames = workBook.getSheetNames();
Sheet sheet=null;
for (int sheetNumber =0; sheetNumber < sheetNames.length; sheetNumber++){
List<String > fields = new ArrayList<String>();
sheet=workBook.getSheet(sheetNames[sheetNumber]);
for (int columns=0;columns < sheet.getColumns();columns++){
fields.add(sheet.getCell(columns, 0).getContents());
}
map.put(sheetNames[sheetNumber],fields);
}
return map;
}

希望对大家有帮助

关于java - 如何使用 jxl 逐张读取 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372136/

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