假设我有一个由三个工作表组成的xlsx文件。使用此代码片段,我能够读取整个xlsx文件,即所有三个工作表,其中每行用括号分隔,每个单元格用逗号分隔。
public static List<List<String>> excelProcess(File xlsxFile) throws Exception {
int minColumns = -1;
// The package open is instantaneous, as it should be.
OPCPackage p = OPCPackage.open(xlsxFile.getPath(), PackageAccess.READ);
XLSXParse xlsx2csv = new XLSXParse(p, System.out, minColumns);
xlsx2csv.process();
System.out.println("row list===="+xlsx2csv.getRowList().size());
return xlsx2csv.getRowList();
}
这里xlsxFile是xlsx文件的路径。但我只想要特定工作表的数据,比如工作表2,所以我也会传递工作表名称,如下所示。
public static List<List<String>> excelProcess(File xlsxFile,String sheetName) throws Exception {
这里sheetName是特定的工作表名称。
答案 0 :(得分:1)
您似乎没有使用任何内置的Apache POI代码进行解析,因此您需要直接切换到使用POI!
有了,如果您查看Workbook上的方法,您会发现有一些方法可以让您获取给定的工作表by name或by index
您的代码看起来像
public static List<List<String>> excelProcess(File xlsxFile, String sheetName)
throws Exception {
Workbook wb = WorkbookFactory.create(xlsxFile);
Sheet sheet = wb.getSheet(sheetName);
// process sheet contents here
// eg something like
DataFormatter formatter = new DataFormatter();
for (Row r : sheet) {
for (Cell c : r) {
System.out.println(formatter.formatCellValue(c));
}
}
}
请参阅Usermodel documentation和iterating over rows and cells documentation开始使用Apache POI处理文件