public void readExcel(String fileName)
try
{
FileInputStream myInput = new FileInputStream(fileName);
POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
HSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while(rowIter.hasNext())
{
HSSFRow myRow = (HSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
ArrayList cellStoreVector=new ArrayList();
String header_name = null;
while(cellIter.hasNext())
{
HSSFCell myCell = (HSSFCell) cellIter.next();
// if it is empty cell in my excel file its not added to
// array List
cellStoreVector.add(myCell);
}
cellVectorHolder.add(cellStoreVector);
}
}catch (Exception e)
{
e.printStackTrace();
}
saveToDatabase(cellVectorHolder);
}
public void saveToDatabase(ArrayList array)
{
for (int i=0;i<array.size(); i++)
{
ArrayList cellStoreVector=(ArrayList)array.get(i);
for (int j=0; j < cellStoreVector.size();j++)
{
HSSFCell myCell = (HSSFCell)cellStoreVector.get(j);
String st = myCell.toString();
System.out.println("values "+st);
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是我的示例代码,用于读取excel文件并将值打印到控制台中.这里我在读取空白单元格时遇到问题,并且这些空白单元格未显示在控制台中.所以请给我解读空白单元的解决方案并在控制台中打印这个空白.
来自HSSFRow#cellIteratorJavaDoc:
请注意,第4个元素可能不是单元格4,因为迭代器不会返回未定义的(null)单元格.在返回的单元格上调用getCellNum()以了解它们是哪个单元格.
这意味着您必须存储当前和最后一个单元格编号,如果您得到的差异大于1,则中间有空白/未定义单元格,即类似 int numBlankCells = (curCellNum - lastCellNum) - 1;
另一个方法可能是:
short minColIndex = row.getFirstCellNum();
short maxColIndex = row.getLastCellNum();
for(short colIndex = minColIndex; colIndex < maxColIndex; colIndexx++) {
HSSFCell cell = row.getCell(colIndex);
if(cell == null) {
//blank/undefined cell
}
else {
//defined cell which still could be of type HSSFCell.CELL_TYPE_BLANK or contain an empty string
}
}
Run Code Online (Sandbox Code Playgroud)