项目需要解析Excel文档获取数据,就在网上找了一些资料,结合自己这次使用,写下心得:
1, maven项目需加入如下依赖:
& lt; dependency> & lt; groupId> org.apache.poi & lt; artifactId> poi & lt; version> 3.10 -final & lt;/dependency> & lt; dependency> & lt; groupId> org.apache.poi & lt; artifactId> poi-ooxml & lt; version> 3.10 -final & lt;/dependency>
直接上测试类,类里有完善的注释:
包shindo.Java; 进口java.io.FileInputStream; 进口java.io.InputStream; 进口java.util.ArrayList; 进口并不知道; 进口org.apache.poi.hssf.usermodel.HSSFCell; 进口org.apache.poi.hssf.usermodel.HSSFRow; 进口org.apache.poi.hssf.usermodel.HSSFSheet; 进口org.apache.poi.hssf.usermodel.HSSFWorkbook; 进口org.apache.poi.ss.usermodel.Cell; 进口org.apache.poi.xssf.usermodel.XSSFCell; 进口org.apache.poi.xssf.usermodel.XSSFRow; 进口org.apache.poi.xssf.usermodel.XSSFSheet; 进口org.apache.poi.xssf.usermodel.XSSFWorkbook; 公开课ExcelUtil { 公共静态void main (String [] args) { 字符串路径=" D: \ \ IDE \ \ workspace-Neon \ \ Java \ \ src \ \ refund.xls”; 尝试{ List比;结果=new ExcelUtil () .readXls(路径); System.out.println (result.size ()); for (int i=0;我& lt;result.size ();我+ +){ List
模型=result.get(我); system . out。println (“orderNum:”+ model.get(0) +”——比;orderAmount:“+ model.get (1)); } }捕捉(异常e) { e.printStackTrace (); } }/* * * * @Title: readXls * @Description:处理xls文件 * @param @param路径 * @param @return * @param @throws异常设定文件 * @return List 比;返回类型 * @throws * *从代码不难发现其处理逻辑: * 1。先用InputStream获取excel文件的io流 * 2,然后穿件一个内存中excel的文件HSSFWorkbook类型对象,这个对象表示了整个excel文件。 * 3。对这个excel文件的每页做循环处理 * 4。对每页中每行做循环处理 * 5。对每行中的每个单元格做处理,获取这个单元格的值 * 6。把这行的结果添加到一个列表数组中 * 7。把每行的结果添加到最后的总结果中 * 8。解析完以后就获取了一个List
祝辞类型的对象了 * */私人List
比;{readXls (String路径)抛出异常 InputStream是=new FileInputStream(路径);//HSSFWorkbook标识整个excel HSSFWorkbook HSSFWorkbook=new HSSFWorkbook(是); List
比;结果=new ArrayList
在(); int大?hssfWorkbook.getNumberOfSheets ();//循环每一页,并处理当前循环页 for (int numSheet=0;numSheet & lt;大小;numSheet + +) {//HSSFSheet标识某一页 HSSFSheet HSSFSheet=hssfWorkbook.getSheetAt (numSheet); 如果(hssfSheet==null) { 继续; }//处理当前页,循环读取每一行 for (int rowNum=1;rowNum & lt;=hssfSheet.getLastRowNum ();rowNum + +) {//HSSFRow表示行 HSSFRow HSSFRow=hssfSheet.getRow (rowNum); int minColIx=hssfRow.getFirstCellNum (); int maxColIx=hssfRow.getLastCellNum (); List
rowList=new ArrayList ();//遍历改行,获取处理每个细胞元素 for (int colIx=minColIx;colIx & lt;maxColIx;colIx + +) {//HSSFCell表示单元格 HSSFCell细胞=hssfRow.getCell (colIx); 如果(细胞==null) { 继续; } rowList.add (getStringVal(细胞)); } result.add (rowList); } } 返回结果; }/* * * * @Title: readXlsx * @Description:处理Xlsx文件 * @param @param路径 * @param @return * @param @throws异常设定文件 * @return List 比;返回类型 * @throws */私人List
比;{readXlsx (String路径)抛出异常 InputStream是=new FileInputStream(路径); XSSFWorkbook XSSFWorkbook=new XSSFWorkbook(是); List
比;结果=new ArrayList
在();//循环每一页,并处理当前循环页 (XSSFSheet XSSFSheet: xssfWorkbook) { 如果(xssfSheet==null) { 继续; }//处理当前页,循环读取每一行 for (int rowNum=1;rowNum & lt;=xssfSheet.getLastRowNum ();rowNum + +) { XSSFRow XSSFRow=xssfSheet.getRow (rowNum); int minColIx=xssfRow.getFirstCellNum (); int maxColIx=xssfRow.getLastCellNum (); List
Java使用芋泥包读取Excel文档代码分享