java获取异常行数,关于java读取excel的有关问题。读取到某行有空值的异常

关于java读取excel的问题。读取到某行有空值的错误

private void readXml(String fileName) {

boolean isE2007 = false;    //判断是否是excel2007格式

if(fileName.endsWith("xlsx"))

isE2007 = true;

try {

InputStream input = new FileInputStream(fileName);  //建立输入流

Workbook wb  = null;

//根据文件格式(2003或者2007)来初始化

if(isE2007)

wb = new XSSFWorkbook(input);

else

wb = new HSSFWorkbook(input);

Sheet sheet = wb.getSheetAt(0);     //获得第一个表单

Iterator rows = sheet.rowIterator(); //获得第一个表单的迭代器

while (rows.hasNext()) {

Row row = rows.next();  //获得行数据

System.out.println("Row #" + row.getRowNum());  //获得行号从0开始

Iterator cells = row.cellIterator();    //获得第一行的迭代器

String value = "";

while (cells.hasNext()) {

Cell cell = cells.next();  //获得列数据

System.out.println("Cell #" + cell.getColumnIndex());

switch (cell.getCellType()) {   //根据cell中的类型来输出数据

case HSSFCell.CELL_TYPE_NUMERIC:

//   System.out.println(cell.getNumericCellValue());

DecimalFormat df = new DecimalFormat("0");

String shu = df.format(cell.getNumericCellValue());  //将科学计数的转换

value += shu+ ",";

System.out.println(shu);

break;

case HSSFCell.CELL_TYPE_STRING:

System.out.println(cell.getStringCellValue());

value += cell.getStringCellValue() + ",";

break;

case HSSFCell.CELL_TYPE_BOOLEAN:

System.out.println(cell.getBooleanCellValue());

value += cell.getBooleanCellValue()+ ",";

break;

case HSSFCell.CELL_TYPE_FORMULA:

System.out.println(cell.getCellFormula());

value += cell.getCellFormula()+ ",";

break;

default:

System.out.println("unsuported sell type");

break;

}

}

//写入数据库

if(row.getRowNum()>0){

String[] val = value.split(",");

System.out.println(value);

AddressList addressList= new AddressList();

addressList.setName(val[0]);

addressList.setTel(val[1]);

addressList.setEmall(val[2]);

addressList.setFax(val[3]);

addressList.setRoomnum(val[4]);

addressList.setOph(val[5]);

addressList.setAddress(val[6]);

addressList.setComments(val[7]);

addressList.setSort(Integer.parseInt(val[8]));

//addressList.setBirthday(val[9]);

addressList.setPid(pid);

addressList.setUserid(userid);

addressList.setType(type);

addressList.setSex(0);

addressListService.save(addressList);

}

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

代码如上,原文http://blog.csdn.net/shuwei003/article/details/6741649 ,我在原文的基础上修改的,我是导入到sql里面 出现问题的地方是在//写入数据库,

10284730.png

当读取到第五列的时候因为是空的,addressList.setName(val[0]); 这就取不到,因为是根据数字来取值的,没有值就错。一错整个方法就运行不了

------解决思路----------------------

http://blog.csdn.net/shuwei003/article/details/6741649

试试能不能满足你的需求

------解决思路----------------------

while (cells.hasNext()) {

Cell cell = cells.next();  //获得列数据

System.out.println("Cell #" + cell.getColumnIndex());

switch (cell.getCellType()) {   //根据cell中的类型来输出数据

case HSSFCell.CELL_TYPE_NUMERIC:

//   System.out.println(cell.getNumericCellValue());

DecimalFormat df = new DecimalFormat("0");

String shu = df.format(cell.getNumericCellValue());  //将科学计数的转换

value += shu+ ",";

System.out.println(shu);

break;

case HSSFCell.CELL_TYPE_STRING:

System.out.println(cell.getStringCellValue());

value += cell.getStringCellValue() + ",";

break;

case HSSFCell.CELL_TYPE_BOOLEAN:

System.out.println(cell.getBooleanCellValue());

value += cell.getBooleanCellValue()+ ",";

break;

case HSSFCell.CELL_TYPE_FORMULA:

System.out.println(cell.getCellFormula());

value += cell.getCellFormula()+ ",";

break;

default:

System.out.println("unsuported sell type");

break;

}

}

具体看看你的 数据 我看上面每一行都有 个  , default:

value +=  ",";

System.out.println("unsuported sell type");

break;

试试 。

你在应该 value 的个数和你 的单元格个数数量一样。

------解决思路----------------------

全部用String来接收他,初始给个null;

然后加个判断if (a=null){a=0;}

等要操作的时候强转int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值