81,122
社区成员




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<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器
while (rows.hasNext()) {
Row row = rows.next(); //获得行数据
System.out.println("Row #" + row.getRowNum()); //获得行号从0开始
Iterator<Cell> 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();
}
}
我已经找到解决方案:获得参数的数量和读取excel里表格数量比较 博主解决这个问题解决了吗
博主解决这个问题解决了吗
while (rows.hasNext()) { Row row = rows.next(); //获得行数据 System.out.println("Row #" + row.getRowNum()); //获得行号从0开始 Iterator<Cell> cells = row.cellIterator(); //获得第一行的迭代器 String value = ""; while (cells.hasNext()) { Cell cell = cells.next(); //获得列数据 System.out.println("Cell #" + cell.getColumnIndex()); System.out.println(cell.getStringCellValue()); value += cell.getStringCellValue() + ","; } //去掉最后一个逗号。 value.substring(0, value.length()-1); //写入数据库 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); } }
String a=cell.getStringCellValue() ; 把A打出来看看是啥玩意
http://blog.csdn.net/shuwei003/article/details/6741649 试试能不能满足你的需求
addressList.setName(val[0]); 是 val[0] 出的问题吗 ,如果是,name你可以设置空白吗
addressList.setName(val[0]); 具体没看。 为空的数据就不要写了
取数前先判断是否为空值啊,如果允许空值,换成""继续,如果不允许,抛出异常。