我有一个Excel工作表,其中有14行。 2行为空。在14行中,有12行包含数据。数据可能存在于每一行的任何列中。因此,我想迭代每一行的单元格,如果任何单元格中都存在数据,那么我需要增加j
变量。
我的要求是,如果有14行并且其中12行有数据,则j
变量应打印12。
package com.optum.synergy.nav4Me.ui.stepDefinitions;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellAddress;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
public class ExcelSheetTest {
public static final String SAMPLE_XLSX_FILE_PATH = "C:/Users/abc/Documents/excel_test.xlsx";
public static void main(String[] args) {
System.out.println("okkk");
// Creating a Workbook from an Excel file (.xls or .xlsx)
Workbook workbook;
try {
workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));
System.out.println("Workbook has " + workbook.getNumberOfSheets() + " Sheets ");
Sheet sh = workbook.getSheetAt(0);
int num1 = sh.getPhysicalNumberOfRows();
System.out.println(" " + num1);
int j = 0;
for (int i = 0; i < num1; i++) {
Row eachrow = sh.getRow(i);
for (Cell cell : eachrow) {
System.out.println("...... "+cell);
if(cell !=null){
j++ ;
break ;
}
}
}
System.out.println("Row counts :"+j);
} catch (EncryptedDocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Retrieving the number of sheets in the Workbook
}
}
当前“行数:”打印:14
我应该如何修复代码以满足我的要求?
答案 0 :(得分:0)
尝试一下...
if(cell !=null && cell.getCellType() != Cell.CELL_TYPE_BLANK)
{
j++ ;
break ;
}
答案 1 :(得分:0)
我认为有不同类型的空单元格:一次没有数据,一次有空字符串作为数据。也许那是您遇到什么问题?
尝试检查单元格值中的空字符串:
// I think this check will handle blank cells also
if (cell != null && !cell.toString().isEmpty()) {
j++;
break;
}