如何使用Java在Excel电子表格中从多个工作表中读取特定单元格的内容?

我有一个电子表格有超过100张。 我必须从每张纸上读取特定的单元格内容,例如第7行第5列,并将其单独写入一列中。

像这样的东西?

public static List<String> getCellOfAllSheets (File file, int row, int cell) throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file)); List<String> rows = new ArrayList<>(workbook.getNumberOfSheets()); for (int numberOfSheet = 0; numberOfSheet < workbook.getNumberOfSheets(); numberOfSheet++) { HSSFSheet sheet = workbook.getSheetAt(numberOfSheet); rows.add(sheet.getRow(row).getCell(cell).getStringCellValue()); } return rows; } 

我认为你所要问的是:对于许多工作表中给定的行和列位置(单元格),你想抓住单元格,然后将这些值保存到一个新的表单中。 假设如此

首先,打开工作簿,并添加一个新工作表:

 Workbook wb = WorkbookFactory.create(new File("input.xlsx")); Sheet output = wb.createSheet("Found Values"); 

接下来,使用CellReference将单元格引用(例如D3)转换成行和单元格索引 :

  CellReference ref = new CellReference("D3"); // example int rowWanted = ref.getRow(); // 2 int cellWanted = ref.getCol(); // 3 

现在,我们遍历所有其他表单(除了我们的新表单),抓取感兴趣的单元格,并将其写入新表单

  for (int sn=0; sn<wb.getNumberOfSheets()-1; sn++) { Sheet input = wb.getSheetAt(sn); Row or = output.createRow(sn); Cell oc = or.createCell(0); Row ir = input.getRow(rowWanted); Cell ic = null; if (ir != null) { ic = ir.getCell(cellWanted, Row.RETURN_BLANK_AS_NULL); } if (ic == null) { // Empty oc.setCellValue("No value in " + input.getSheetName()); } else { // Save the value to the new cell switch (ic.getCellType()) { case Cell.CELL_TYPE_STRING: oc.setCellValue(ic.getRichStringCellValue()); break; case Cell.CELL_TYPE_NUMERIC: oc.setCellValue(ic.getNumericCellValue()); oc.setCellStyle(ic.getCellStyle())); break; case Cell.CELL_TYPE_BOOLEAN: oc.setCellValue(ic.getBooleanCellValue()); break; case Cell.CELL_TYPE_FORMULA: oc.setCellFormula(ic.getCellFormula()); break; default: } } } 

最后,我们保存更新的文件:

  FileOutputStream out = new FileOutputStream("output.xlsx"); wb.write(out); out.close();