如何使用poi在java中读取excel(.xlsx)?
我试图在java中读取excel。我有以下代码。
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class Test { public static void main(String[] args) throws IOException { String fname = "D:\\Test.xlsx"; // or "C:\\Test.xls" C:\\SDI-XL.xls InputStream inp = new FileInputStream(fname); Workbook wb = new XSSFWorkbook(inp); // Declare XSSF WorkBook Sheet sheet = wb.getSheetAt(0); // sheet can be used as common for XSSF and HSSF Iterator rows=sheet.rowIterator(); while (rows.hasNext()) { Row row = (Row) rows.next(); System.out.println("row#=" + row.getRowNum() + ""); Iterator cells = row.cellIterator(); while (cells.hasNext()) { Cell cell = (Cell) cells.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: System.out.println(cell.getRichStringCellValue().getString()); break; case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { System.out.println(cell.getDateCellValue() + ""); } else { System.out.println(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue() + ""); break; case Cell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; default: } } } inp.close(); } }
我输入了poi.3.6jar和poi.ooxml-3.6 jar。 当我运行此程序时,我收到以下错误消息。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException at Test.main(Test.java:16) Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 1 more
我不明白为什么这个错误信息来了。所以请帮助我。
将xmlbeans-2.3.0.jar
文件添加到类路径中。
添加以下jar文件:
- POI-3.9.jar
- POI-OOXML-3.9.jar
- POI-OOXML-模式-3.7.jar
- XMLBeans的-2.3.0.jar
- dom4j的-1.6.1.jar
加
xmlbeans-2.3.0.jar dom4j-1.6.1.jar
与常规的POI XML一起,它肯定会解决这个问题。
使用此:输入字符串filePath输出是json对象列表的列表
Have these dependencies org.apache.poi poi-ooxml 3.9 org.apache.commons commons-collections4 4.0 /** * Function reads the input excel and gives list(sheet) of objects(rows of each sheet) * @param filePath * @return list of list of json objects */ public static List excelFileReader(String filePath){ List
totalSheetList=new ArrayList<>(); XSSFWorkbook workbook= null; try { workbook = new XSSFWorkbook(filePath); } catch (IOException e) { e.printStackTrace(); } //iteration for sheets in a workbook for(int sheetIndex=0;sheetIndex singleSheetList=new ArrayList<>(); //excel header - first row and non-empty String[] header=new String[sheet.getRow(0).getPhysicalNumberOfCells()]; if (sheet.getPhysicalNumberOfRows()!=0 && sheet.getRow(0).getRowNum()==0) { row=sheet.getRow(0); for(int index=0;index eachRow=new HashMap<>(); for(int colIndex=0;colIndex
添加以下jar并将它们添加到类路径中然后运行您的项目。
- dom4j的-1.6.1-sources.jar
- dom4j.jar
- log4j的-1.2.17.jar
- POI-3.5-FINAL.jar
- POI-OOXML-3.5-beta5.jar
- POI-OOXML-模式-3.9.jar
- XMLBeans的-2.3.0.jar