`
胡德品
  • 浏览: 3919 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

poi 读取excel2007 出现空指针 期待解决

阅读更多
public static void main(String args[]) throws FileNotFoundException,
IOException {
String file = "d:\\user.xlsx";
List<User> list = importExcel(file);
for (User u : list) {
System.out.println("姓名:" + u.getName() + "密码:" + u.getPassword());
}

}



public static List<User> importExcel(String file)
throws FileNotFoundException, IOException {
String s=file.substring(file.indexOf(".")+1);
List<User> userList = new ArrayList<User>();;// 批处理导入的数据容器
System.out.println(s);
//支持excel2007
if(s.equals("xlsx")){
System.out.println("***********");
XSSFWorkbook wb= new XSSFWorkbook(file);
//只能得到第一个sheet
XSSFSheet sheet = wb.getSheetAt(0);
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getPhysicalNumberOfRows();
System.out.println(firstRowNum+","+lastRowNum);
for (int r = firstRowNum; r <= lastRowNum; r++) {
// 循环得到每一行
XSSFRow row = sheet.getRow(r);
if (row == null)
continue;
String cell=row.getCell(r).toString();//获取每一行的内容

User user = new User();
user.setName(cell);


user.setPassword("1111");

userList.add(user);
}



            

}else if (s.equals("xls")){
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
HSSFWorkbook workbook = new HSSFWorkbook(fs);

int sheetNum = workbook.getNumberOfSheets();// 得到工作簿的个数
for (int i = 0; i < sheetNum; i++) {
// 循环得到每个工作簿
HSSFSheet sheet = workbook.getSheetAt(i);
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getLastRowNum();
for (int r = firstRowNum; r <= lastRowNum; r++) {
// 循环得到每一行
HSSFRow row = sheet.getRow(r);
if (row == null)
continue;
int firstCellNum = row.getFirstCellNum();
int lastCellNum = row.getLastCellNum();
User user = new User();
for (int c = firstCellNum; c <= lastCellNum; c++) {
HSSFCell cell = row.getCell((short) c);// 得到c行的单元格对象

if (cell == null)
continue;
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
user.setName(cell.getStringCellValue());

}

}
user.setPassword("1111");

userList.add(user);
}

}

}
return userList;

}


异常信息:

xlsx
***********
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
at com.iflysse.poi.testExcel.ReadExcelTest.importExcel(ReadExcelTest.java:39)
at com.iflysse.poi.testExcel.ReadExcelTest.main(ReadExcelTest.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
分享到:
评论
2 楼 胡德品 2011-07-25  
jieshuo 写道
楼主怎么解决的啊?我也碰到同样的问题哦

public static void main(String args[]) throws FileNotFoundException,
IOException {
String file = "d:\\user.xls";
List<User> list = importExcel(file);
for (User u : list) {
System.out.println("姓名:" + u.getName() + "密码:" + u.getPassword()+"角色Id:"+u.getRoleId());
}
}
public static List<User> importExcel(String file)
throws FileNotFoundException, IOException {
String s=file.substring(file.indexOf(".")+1);
List<User> userList = new ArrayList<User>();;// 批处理导入的数据容器
System.out.println(s);
//支持excel2007
if(s.equals("xlsx")){
XSSFWorkbook wb= new XSSFWorkbook(file);
//只能得到第一个sheet
XSSFSheet sheet = wb.getSheetAt(0);
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getLastRowNum();
for (int r = firstRowNum; r <=lastRowNum; r++) {
// 循环得到每一行
XSSFRow row = sheet.getRow(r);
if (row == null)
continue;
int firstCellNum = row.getFirstCellNum();
int lastCellNum = row.getLastCellNum();
User user = new User();
for (int c = firstCellNum; c <= lastCellNum; c++) {
XSSFCell cell = row.getCell((short) c);// 得到c行的单元格对象
if (cell == null)
continue;
if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
user.setName(cell.getStringCellValue());
}
if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC){
user.setRoleId((int) cell.getNumericCellValue());
}
}
user.setPassword("1111");
userList.add(user);
}
}else if (s.equals("xls")){
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
HSSFWorkbook workbook = new HSSFWorkbook(fs);
int sheetNum = workbook.getNumberOfSheets();// 得到工作簿的个数
for (int i = 0; i < sheetNum; i++) {
// 循环得到每个工作簿
HSSFSheet sheet = workbook.getSheetAt(i);
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getLastRowNum();
for (int r = firstRowNum+1; r <= lastRowNum; r++) {
// 循环得到每一行
HSSFRow row = sheet.getRow(r);
if (row == null)
continue;
int firstCellNum = row.getFirstCellNum();
int lastCellNum = row.getLastCellNum();
User user = new User();
for (int c = firstCellNum; c <= lastCellNum; c++) {
HSSFCell cell = row.getCell((short) c);// 得到c行的单元格对象                 
if (cell == null)
continue;
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
user.setName(cell.getStringCellValue());
}
if(cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC){
user.setRoleId((int)cell.getNumericCellValue());
}
}
user.setPassword("1111");
userList.add(user);
}
}
}
return userList;
}
[img][/img]
1 楼 jieshuo 2011-03-07  
楼主怎么解决的啊?我也碰到同样的问题哦

相关推荐

    java的POI操作Excel文件.pdf

    使用POI读取Excel文件时,可以创建HSSFWorkbook或XSSFWorkbook对象,然后通过getSheetAt方法获取工作表。写入时,可以通过createSheet方法创建新工作表,或者通过setSheetOrder方法调整工作表顺序,最后使用...

    java读取excel ,xls和xlsx

    以上就是使用Java和Apache POI读取Excel文件的基本步骤。对于更复杂的需求,如处理公式、样式、图表、数据验证等,Apache POI提供了丰富的API供开发者使用。在实际项目中,可能还需要考虑性能优化,比如使用SAX解析...

    读取word和excel 的poi架包

    poi-3.8-20120326.jar,poi-ooxml-schemas-3.8-20120326.jar,poi-ooxml-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar,dom4j-1.6.1.jar,xmlbeans-2.3.0.jar,xmlbeans-2.4.0.jar

    poi 资料

    - 读取时要注意空指针和文件不存在异常。 - 避免文件路径注入和非法字符,确保文件安全。 通过以上步骤,你可以利用Apache POI在Java Web应用中实现Excel的导入导出、文件下载以及打印功能。在实际开发中,根据具体...

    struts2 poi 导入xls xlsx 绝对兼容

    4. 需要处理可能出现的异常,如文件格式错误、空指针异常等。 以上就是关于"Struts2 poi 导入xls xlsx 绝对兼容"的相关知识点,通过Struts2和Apache POI的结合,开发者可以轻松地在Java Web应用中处理Excel文件,...

    poi office操作工具4.0.0jar包

    7. **错误处理与调试**:在实际使用中,需要注意文件格式兼容性问题、空指针异常、数据溢出等问题。Apache POI 提供了详细的错误日志和异常处理机制,帮助开发者定位并解决问题。 8. **最佳实践**:在处理大量数据...

    easyPoi模板导出Excel报表(xls 和xlsx 都支持)

    为了解决这个问题,Java开发领域出现了许多库,其中EasyPoi是一款广泛应用的工具,它能够方便地生成Excel报表,支持xls和xlsx两种格式。本文将详细介绍如何使用EasyPoi模板来导出Excel报表,并深入探讨其背后的原理...

    java操作excel

    - 读取Excel文件时,要处理可能存在的空指针异常和文件不存在异常。 - 及时关闭流以释放资源,避免文件被锁定无法操作。 以上就是关于使用Java和Apache POI操作Excel的基本知识,希望对你入门有所帮助。在实际...

    安卓Excelwordppt文档读写相关-运行闪退Android项目源码一款pdf阅读器.rar

    它允许应用程序创建、修改和读取Excel(XLSX)文件。然而,由于Android内存管理的限制,处理大型Excel文件时需特别注意内存泄漏和性能问题。 其次,对于Word和PowerPoint文档,开发者可能会采用Apache POI的HWPF和...

    JavaFunctionalProgramming:一个GUI驱动的程序,用于通过Java 8中的功能编程概念来读取Excel工作表

    6. **Apache POI库**:读取Excel工作表通常会用到Apache POI库,这是一个流行的开源API,用于处理Microsoft Office格式的文件,包括Excel。它提供了与Excel数据交互的接口和类,如`Sheet`、`Row`和`Cell`。 7. **...

    bisc-excel

    - **错误处理**:处理文件时可能会遇到格式错误、空指针异常或其他运行时异常,因此必须有适当的错误处理机制。 - **性能优化**:对于大量数据,考虑使用批处理操作来提高性能。 - **单元格类型**:Excel单元格可以...

    java学士后第一单元项目 超市收银系统(项目评分92)

    这部分可能需要用到Java的数据分析库,如Apache POI读取Excel文件,或者使用Java的CSV处理库。 5. **用户界面**:虽然题目未明确指出,但一个完整的系统通常需要友好的用户界面。这可能涉及到Java Swing或JavaFX,...

    Java范例开发大全 (源程序)

     实例40 空指针异常(NullPointerException) 58  实例41 数字格式转换异常(NumberFornatException) 59  实例42 字符串索引越界异常(StringIndexOutBounds) 60  实例43 操作错误...

    java范例开发大全(pdf&源码)

    实例40 空指针异常(NullPointerException) 58 实例41 数字格式转换异常(NumberFornatException) 59 实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException) ...

    java范例开发大全源代码

     实例40 空指针异常(NullPointerException) 58  实例41 数字格式转换异常(NumberFornatException) 59  实例42 字符串索引越界异常(StringIndexOutBounds) 60  实例43 操作错误...

    java范例开发大全

    实例40 空指针异常(NullPointerException) 58 实例41 数字格式转换异常(NumberFornatException) 59 实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException) ...

    Java范例开发大全(全书源程序)

    实例40 空指针异常(NullPointerException) 58 实例41 数字格式转换异常(NumberFornatException) 59 实例42 字符串索引越界异常(StringIndexOutBounds) 60 实例43 操作错误(UnsupportedOperationException...

Global site tag (gtag.js) - Google Analytics