我有一个Java代码,可从excel文档中获取数据。我想计算列数和行总数(在特定列中)。我该如何实现?下面提供了Java代码和所需的o / p
(编辑):我应该进行哪些修改以获得所需的O / P,例如,我应该编写一个循环以获取列和行的计数,或者有一种方法可以做到这一点
所需的O / P
ColumnA ColumnB ColumnC Vinayak James Dan India US Denmark Total number of Columns: 3 number of data in ColumnA:2 number of data in ColumnB:2 number of data in ColumnC:2
(编辑):-在这里回答-计算Excel工作表一列中的行数(提供Java代码)
我的Java代码:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; import org.apache.poi.ss.formula.functions.Column; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelRead { public static void main(String[] args) { int count=0; try { FileInputStream file = new FileInputStream(new File("C:/Users/vinayakp/Desktop/Book.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while(rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch(cell.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\t\t"); break; case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "\t\t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "\t\t"); break; } } System.out.println(""); } file.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException ae) { ae.printStackTrace(); } } }
我得到的输出是:
ColumnA ColumnB ColumnC Vinayak James Dan India US Denmark
我需要获得所需的O / P,如上所示。代码工作正常,但是我需要获取列和行的计数值。请为我提供相同的解决方案。我之前的代码有问题,此问题已解决:读取Excel文档时出现问题(Java代码)
我认为您可以使用此处建议的代码来获取列,然后针对列中的每一行(尽管与POI方法有关的行中的每一列更多),只需计算所需的值即可。
因此,您的代码可能遵循以下内容:
for(Row row : sheet) { short minColIx = row.getFirstCellNum(); short maxColIx = row.getLastCellNum(); for(short colIx = minColIx; colIx<maxColIx; colIx++) { Cell c = row.getCell(colIx); if(c != null) { if(c.getCellType() == Cell.CELL_TYPE_NUMERIC) { // add c.getNumericCellValue() } } } }