[英]How to read an excel file, sheet by sheet using jxl
我正在开发一种实用程序,可以将Excel文件从一种格式转换为另一种格式。 建议我使用jxl库来满足以下要求。
逐页阅读文件并执行以下操作
获取工作表名称,使其成为地图的键,然后获取其列标题并使其具有值。
这将导致以下
Map<String, List<String>> result = result<key=sheetName, value=list of column headers>
对给定文件中的所有工作表执行此操作
我以以下方式做到了
公共Map>函数(字符串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-> ID,名称
sheet2->类别,价格
然后地图会像
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;
}
希望对别人有帮助
public String ExcelValueGetFn(String FilePath, int column, int row) throws BiffException, IOException {
Workbook workbook = null;
final String EXCEL_FILE_LOCATION = FilePath;
workbook = Workbook.getWorkbook(new File(EXCEL_FILE_LOCATION));
Sheet sheet = workbook.getSheet(0);
Cell cell1 = sheet.getCell(column, row);
System.out.print(cell1.getContents() + ":");
String textToSendFromExcel = cell1.getContents();
return textToSendFromExcel;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.