当前位置: 代码迷 >> Java相关 >> POI 读取Excel文档中的数据——兼容Excel2003跟Excel2007
  详细解决方案

POI 读取Excel文档中的数据——兼容Excel2003跟Excel2007

热度:58   发布时间:2016-04-22 19:23:27.0
POI 读取Excel文档中的数据——兼容Excel2003和Excel2007

  Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

  HSSF - 提供读写Microsoft Excel格式档案的功能。
  XSSF - 提供读写Microsoft OOXML格式档案的功能。
 
    以下是项目工程结构图:
  

  使用POI解析EXCEL文件需要用到POI相关的jar包,这些jar包可以在apache官网上去下载http://poi.apache.org/download.html

      这里我使用的jar包版本为poi-3.14-beta1-20151223.jar

    相关代码如下:

  Excel文件解析接口 IExcelParse.java

 1 /* 2  * IExcelParse.java 3  *  4  * 2016-1-6 下午4:45:53 5  *  6  * RecluseKapoor 7  *   8  * Copyright © 2016, RecluseKapoor. All rights reserved. 9  * 10  */11 package com.rk.pub.poi.excel;12 13 /**14  * @Title: recluse-Excel文件解析接口15  * 16  * @Description:Excel文件解析接口,所有版本的Excel解析类都要实现该接口17  * 18  * @Company: 卡普工作室19  * 20  * @Website: http://www.cnblogs.com/reclusekapoor/21  * 22  * @author: RecluseKapoor23  * 24  * @CreateDate:2016-1-6 下午9:42:0825  * 26  * @version: 1.027  * 28  * @lastModify:29  * 30  */31 public interface IExcelParse {32     public void loadExcel(String path) throws Exception;33 34     public String getSheetName(int sheetNo);35 36     public int getSheetCount() throws Exception;37 38     public int getRowCount(int sheetNo);39 40     public int getRealRowCount(int sheetNo);41 42     public String readExcelByRowAndCell(int sheetNo, int rowNo, int cellNo)43             throws Exception;44 45     public String[] readExcelByRow(int sheetNo, int rowNo) throws Exception;46 47     public String[] readExcelByCell(int sheetNo, int cellNo) throws Exception;48 49     public void close();50 }

 

  1 /*  2  * ExcelParse2003.java  3  *   4  * 2016-1-6 下午4:45:53  5  *   6  * RecluseKapoor  7  *    8  * Copyright © 2016, RecluseKapoor. All rights reserved.  9  *  10  */ 11 package com.rk.pub.poi.excel; 12  13 import java.io.FileInputStream; 14 import java.io.FileNotFoundException; 15 import java.io.IOException; 16 import java.sql.Timestamp; 17 import java.text.DecimalFormat; 18 import java.util.Date; 19  20 import org.apache.poi.hssf.usermodel.HSSFCell; 21 import org.apache.poi.hssf.usermodel.HSSFDateUtil; 22 import org.apache.poi.hssf.usermodel.HSSFRow; 23 import org.apache.poi.hssf.usermodel.HSSFSheet; 24 import org.apache.poi.hssf.usermodel.HSSFWorkbook; 25 import org.apache.poi.poifs.filesystem.POIFSFileSystem; 26  27 /** 28  * @Title: recluse--2003版Excel文件解析工具 29  *  30  * @Description: 解析2003版Excel文件具体实现类 31  *  32  * @Company: 卡普工作室 33  *  34  * @Website: http://www.cnblogs.com/reclusekapoor/ 35  *  36  * @author: RecluseKapoor 37  *  38  * @CreateDate:2016-1-6 下午9:59:51 39  *  40  * @version: 1.0 41  *  42  * @lastModify: 43  *  44  */ 45 public class ExcelParse2003 implements IExcelParse { 46     // Excel工作区 47     private HSSFWorkbook wb = null; 48  49     /** 50      * 加载excel文件,获取excel工作区 51      *  52      * @param filePathAndName 53      * @throws FileNotFoundException 54      * @throws IOException 55      */ 56     @Override 57     public void loadExcel(String filePathAndName) throws FileNotFoundException, 58             IOException { 59         FileInputStream fis = null; 60         POIFSFileSystem fs = null; 61         try { 62             fis = new FileInputStream(filePathAndName); 63             fs = new POIFSFileSystem(fis); 64             wb = new HSSFWorkbook(fs); 65         } catch (FileNotFoundException e) { 66             e.printStackTrace(); 67             throw new FileNotFoundException("加载Excel文件失败:" + e.getMessage()); 68         } catch (IOException e) { 69             e.printStackTrace(); 70             throw new IOException("加载Excel文件失败:" + e.getMessage()); 71         } finally { 72             if (fis != null) { 73                 fis.close(); 74                 fis = null; 75             } 76             if (fs != null) { 77                 fs.close(); 78             } 79         } 80     } 81  82     /** 83      * 获取sheet页名称 84      *  85      * @param sheetNo 86      * @return 87      */ 88     public String getSheetName(int sheetNo) { 89         return wb.getSheetName(sheetNo - 1); 90     } 91  92     /** 93      * 获取sheet页数 94      *  95      * @return int 96      */ 97     public int getSheetCount() throws Exception { 98         int sheetCount = wb.getNumberOfSheets(); 99         if (sheetCount == 0) {100             throw new Exception("Excel中没有SHEET页");101         }102         return sheetCount;103     }104 105     /**106      * 获取sheetNo页行数107      * 108      * @param sheetNo109      * @return110      */111     public int getRowCount(int sheetNo) {112         int rowCount = 0;113         HSSFSheet sheet = wb.getSheetAt(sheetNo - 1);114         rowCount = sheet.getLastRowNum();115         return rowCount;116     }117 118     /**119      * 获取sheetNo页行数(含有操作或者内容的真实行数)120      * 121      * @param sheetNo122      * @return123      */124     public int getRealRowCount(int sheetNo) {125         int rowCount = 0;126         int rowNum = 0;127         HSSFSheet sheet = wb.getSheetAt(sheetNo - 1);128         rowCount = sheet.getLastRowNum();129         if (rowCount == 0) {130             return rowCount;131         }132         HSSFRow row = null;133         HSSFCell cell = null;134         rowNum = rowCount;135         for (int i = 0; i < rowCount; i++) {136             row = sheet.getRow(rowNum);137             rowNum--;138             if (row == null) {139                 continue;140             }141             short firstCellNum = row.getFirstCellNum();142             short lastCellNum = row.getLastCellNum();143             for (int j = firstCellNum; j < lastCellNum; j++) {144                 cell = row.getCell(j);145                 if (cell == null) {146                     continue;147                 } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {148                     continue;149                 } else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {150                     String value = cell.getStringCellValue();151                     if (value == null || value.equals("")) {152                         continue;153                     } else {154                         value = value.trim();155                         if (value.isEmpty() || value.equals("")156                                 || value.length() == 0) {157                             continue;158                         }159                     }160                 }161                 rowCount = rowNum + 1;162                 return rowCount;163             }164         }165         rowCount = rowNum;166         return rowCount;167     }168 169     /**170      * 读取第sheetNo个sheet页中第rowNo行第cellNo列的数据171      * 172      * @param sheetNo173      *            sheet页编号174      * @param rowNo175      *            行号176      * @param cellNo177      *            列号178      * @return 返回相应的excel单元格内容179      * @throws Exception180      */181     public String readExcelByRowAndCell(int sheetNo, int rowNo, int cellNo)182             throws Exception {183         String rowCellData = "";184         sheetNo = sheetNo - 1;185         HSSFSheet sheet = wb.getSheetAt(sheetNo);186         String sheetName = wb.getSheetName(sheetNo);187         try {188             HSSFRow row = sheet.getRow(rowNo - 1);189             if (row == null) {190                 return "NoData";191             }192             HSSFCell cell = row.getCell((cellNo - 1));193             if (cell == null) {194                 return "NoData";195             }196             int cellType = cell.getCellType();197             if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {// 数值(包括excel中数值、货币、日期、时间、会计专用等单元格格式)198                 //判断数值是否为日期或时间;但是该判断方法存在漏洞,只能识别一种日期格式。199                 if (HSSFDateUtil.isCellDateFormatted(cell)) {//日期、时间200                     double d = cell.getNumericCellValue();201                     Date date = HSSFDateUtil.getJavaDate(d);202                     Timestamp timestamp = new Timestamp(date.getTime());203                     String temp = timestamp.toString();204                     if (temp.endsWith("00:00:00.0")) {205                         rowCellData = temp.substring(0,206                                 temp.lastIndexOf("00:00:00.0"));207                     } else if (temp.endsWith(".0")) {208                         rowCellData = temp.substring(0, temp.lastIndexOf(".0"));209                     } else {210                         rowCellData = timestamp.toString();211                     }212                 } else {//数值、货币、会计专用、百分比、分数、科学记数 单元格式213                     rowCellData = new DecimalFormat("0.########").format(cell214                             .getNumericCellValue());215                 }216             } else if (cellType == HSSFCell.CELL_TYPE_STRING) {// 字符串217                 rowCellData = cell.getStringCellValue();218             } else if (cellType == HSSFCell.CELL_TYPE_FORMULA) {// 公式219                 double d = cell.getNumericCellValue();220                 rowCellData = String.valueOf(d);221             } else if (cellType == HSSFCell.CELL_TYPE_BLANK) {// 空值222                 rowCellData = "";223             } else if (cellType == HSSFCell.CELL_TYPE_BOOLEAN) {// boolean值224                 rowCellData = "";225             } else if (cellType == HSSFCell.CELL_TYPE_ERROR) {// 异常226                 rowCellData = "";227             } else {228 229             }230         } catch (Exception e) {231             e.printStackTrace();232             throw new Exception(sheetName + "sheet页中" + "第" + rowNo + "行" + "第"233                     + cellNo + "列" + "数据不符合要求,请检查sheet页");234         }235         return rowCellData;236     }237 238     /**239      * 读取第sheetNo个sheet页中第rowNo行的数据240      * 241      * @param sheetNo242      *            指定sheetNo页243      * @param rowNo244      *            指定rowNo行245      * @return 返回第rowNo行的数据246      * @throws Exception247      */248     public String[] readExcelByRow(int sheetNo, int rowNo) throws Exception {249         String[] rowData = null;250         HSSFSheet sheet = wb.getSheetAt(sheetNo - 1);251         HSSFRow row = sheet.getRow(rowNo - 1);252         int cellCount = row.getLastCellNum();253         rowData = new String[cellCount];254         for (int k = 1; k <= cellCount; k++) {255             rowData[k - 1] = readExcelByRowAndCell(sheetNo, rowNo, k);256         }257         return rowData;258     }259 260     /**261      * 读取第sheetNo个sheet页中第cellNo列的数据262      * 263      * @param sheetNo264      *            指定sheetNo页265      * @param cellNo266      *            指定cellNo列号267      * @return 返回第cellNo列的数据268      * @throws Exception269      */270     public String[] readExcelByCell(int sheetNo, int cellNo) throws Exception {271         String[] cellData = null;272         HSSFSheet sheet = wb.getSheetAt(sheetNo - 1);273         int rowCount = sheet.getLastRowNum();274         cellData = new String[rowCount + 1];275         for (int i = 0; i <= rowCount; i++) {276             cellData[i] = readExcelByRowAndCell(sheetNo - 1, i, cellNo - 1);277         }278         return cellData;279     }280 281     /**282      * 关闭excel工作区,释放资源283      * 284      * @throws Exception285      */286     @Override287     public void close() {288         if (wb != null) {289             try {290                 wb.close();291                 wb = null;292             } catch (IOException e) {293                 e.printStackTrace();294             }295         }296     }297 }
  1 /*  2  * ExcelParse2007.java  3  *   4  * 2016-1-6 下午4:45:53  5  *   6  * RecluseKapoor  7  *    8  * Copyright © 2016, RecluseKapoor. All rights reserved.  9  *  10  */ 11 package com.rk.pub.poi.excel; 12  13 import java.io.FileInputStream; 14 import java.io.FileNotFoundException; 15 import java.io.IOException; 16 import java.sql.Timestamp; 17 import java.text.DecimalFormat; 18 import java.util.Date; 19  20 import org.apache.poi.ss.usermodel.DateUtil; 21 import org.apache.poi.xssf.usermodel.XSSFCell; 22 import org.apache.poi.xssf.usermodel.XSSFRow; 23 import org.apache.poi.xssf.usermodel.XSSFSheet; 24 import org.apache.poi.xssf.usermodel.XSSFWorkbook; 25  26 /** 27  * @Title: recluse--2007版Excel文件解析工具 28  *  29  * @Description: 解析2007版Excel文件具体实现类 30  *  31  * @Company: 卡普工作室 32  *  33  * @Website: http://www.cnblogs.com/reclusekapoor/ 34  *  35  * @author: RecluseKapoor 36  *  37  * @CreateDate:2016-1-6 下午9:51:15 38  *  39  * @version: 1.0 40  *  41  * @lastModify: 42  *  43  */ 44 public class ExcelParse2007 implements IExcelParse { 45     // Excel工作区 46     private XSSFWorkbook wb = null; 47  48     /** 49      * 加载excel文件,获取excel工作区 50      *  51      * @param filePathAndName 52      * @throws FileNotFoundException 53      * @throws IOException 54      */ 55     public void loadExcel(String filePathAndName) throws FileNotFoundException, 56             IOException { 57         FileInputStream fis = null; 58         try { 59             fis = new FileInputStream(filePathAndName); 60             wb = new XSSFWorkbook(fis); 61         } catch (FileNotFoundException e) { 62             e.printStackTrace(); 63             throw new FileNotFoundException("加载Excel文件失败:" + e.getMessage()); 64         } catch (IOException e) { 65             e.printStackTrace(); 66             throw new IOException("加载Excel文件失败:" + e.getMessage()); 67         } finally { 68             if (fis != null) { 69                 fis.close(); 70                 fis = null; 71             } 72         } 73     } 74  75     /** 76      * 获取sheet页名称 77      *  78      * @param sheetNo 79      * @return 80      */ 81     public String getSheetName(int sheetNo) { 82         return wb.getSheetName(sheetNo - 1); 83     } 84  85     /** 86      * 获取sheet页数 87      *  88      * @return int 89      */ 90     public int getSheetCount() throws Exception { 91         int sheetCount = wb.getNumberOfSheets(); 92         if (sheetCount == 0) { 93             throw new Exception("Excel中没有SHEET页"); 94         } 95         return sheetCount; 96     } 97  98     /** 99      * 获取sheetNo页行数100      * 101      * @param sheetNo102      * @return103      */104     public int getRowCount(int sheetNo) {105         int rowCount = 0;106         XSSFSheet sheet = wb.getSheetAt(sheetNo - 1);107         rowCount = sheet.getLastRowNum();108         return rowCount;109     }110 111     /**112      * 获取sheetNo页行数(含有操作或者内容的真实行数)113      * 114      * @param sheetNo115      * @return116      */117     public int getRealRowCount(int sheetNo) {118         int rowCount = 0;119         int rowNum = 0;120         XSSFSheet sheet = wb.getSheetAt(sheetNo - 1);121         rowCount = sheet.getLastRowNum();122         if (rowCount == 0) {123             return rowCount;124         }125         XSSFRow row = null;126         XSSFCell cell = null;127         rowNum = rowCount;128         for (int i = 0; i < rowCount; i++) {129             row = sheet.getRow(rowNum);130             rowNum--;131             if (row == null) {132                 continue;133             }134             short firstCellNum = row.getFirstCellNum();135             short lastCellNum = row.getLastCellNum();136             for (int j = firstCellNum; j < lastCellNum; j++) {137                 cell = row.getCell(j);138                 if (cell == null) {139                     continue;140                 } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BLANK) {141                     continue;142                 } else if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {143                     String value = cell.getStringCellValue();144                     if (value == null || value.equals("")) {145                         continue;146                     } else {147                         value = value.trim();148                         if (value.isEmpty() || value.equals("")149                                 || value.length() == 0) {150                             continue;151                         }152                     }153                 }154                 rowCount = rowNum + 1;155                 return rowCount;156             }157         }158 159         rowCount = rowNum;160         return rowCount;161     }162 163     /**164      * 读取第sheetNo个sheet页中第rowNo行第cellNo列的数据(通过)165      * 166      * @param sheetNo167      *            sheet页编号168      * @param rowNo169      *            行号170      * @param cellNo171      *            列号172      * @return 返回相应的excel单元格内容173      * @throws Exception174      */175     public String readExcelByRowAndCell(int sheetNo, int rowNo, int cellNo)176             throws Exception {177         String rowCellData = "";178         XSSFSheet sheet = wb.getSheetAt(sheetNo - 1);179         String sheetName = wb.getSheetName(sheetNo - 1);180         try {181             XSSFRow row = sheet.getRow(rowNo - 1);182             if (row == null) {183                 return "NoData";184             }185             XSSFCell cell = row.getCell((short) (cellNo - 1));186             if (cell == null) {187                 return "NoData";188             }189             int cellType = cell.getCellType();190             String df = cell.getCellStyle().getDataFormatString();191             if (cellType == XSSFCell.CELL_TYPE_NUMERIC) {// 数值(包括excel中数值、货币、日期、时间、会计专用等单元格格式)192                 double d = cell.getNumericCellValue();193                 // 判断数值是否是日期,该方法只能识别部分日期格式,故加入第二个判断条件对不能识别的日期再次进行识别194                 if (DateUtil.isCellDateFormatted(cell)195                         || df.contains("yyyy\"年\"m\"月\"d\"日\"")) {// 日期、时间单元格格式196                     Date date = DateUtil.getJavaDate(d);197                     Timestamp timestamp = new Timestamp(date.getTime());198                     String temp = timestamp.toString();199                     if (temp.endsWith("00:00:00.0")) {// yyyy-MM-dd 格式200                         rowCellData = temp.substring(0,201                                 temp.lastIndexOf("00:00:00.0"));202                     } else if (temp.endsWith(".0")) {// yyyy-MM-dd hh:mm:ss 格式203                         rowCellData = temp.substring(0, temp.lastIndexOf(".0"));204                     } else {205                         rowCellData = timestamp.toString();206                     }207                 } else {// 数值、货币、会计专用、百分比、分数、科学记数 单元格式208                     rowCellData = new DecimalFormat("0.########").format(d);209                 }210             } else if (cellType == XSSFCell.CELL_TYPE_STRING) {// 文本211                 rowCellData = cell.getStringCellValue();212             } else if (cellType == XSSFCell.CELL_TYPE_FORMULA) {// 公式213                 double d = cell.getNumericCellValue();214                 rowCellData = String.valueOf(d);215             } else if (cellType == XSSFCell.CELL_TYPE_BLANK) {//216                 rowCellData = "";217             } else if (cellType == XSSFCell.CELL_TYPE_BOOLEAN) {// 布尔值218                 rowCellData = "";219             } else if (cellType == XSSFCell.CELL_TYPE_ERROR) {// 异常220                 rowCellData = "";221             } else {222                 throw new Exception(sheetName + " sheet页中" + "第" + rowNo + "行"223                         + "第" + cellNo + "列,单元格格式无法识别,请检查sheet页");224             }225         } catch (Exception e) {226             e.printStackTrace();227             throw new Exception(sheetName + "sheet页中" + "第" + rowNo + "行" + "第"228                     + cellNo + "列" + "数据不符合要求,请检查sheet页");229         }230         return rowCellData;231     }232 233     /**234      * 读取第sheetNo个sheet页中第rowNo行的数据235      * 236      * @param sheetNo237      *            指定sheetNo页238      * @param rowNo239      *            指定rowNo行240      * @return241      * @throws Exception242      */243     public String[] readExcelByRow(int sheetNo, int rowNo) throws Exception {244         String[] rowData = null;245         XSSFSheet sheet = wb.getSheetAt(sheetNo - 1);246         XSSFRow row = sheet.getRow(rowNo - 1);247         int cellCount = row.getLastCellNum();248         rowData = new String[cellCount];249         for (int k = 1; k <= cellCount; k++) {250             rowData[k - 1] = readExcelByRowAndCell(sheetNo, rowNo, k);251         }252         return rowData;253     }254 255     /**256      * 读取第sheetNo个sheet页中第cellNo列的数据257      * 258      * @param sheetNo259      *            指定sheetNo页260      * @param cellNo261      *            指定cellNo列号262      * @return263      * @throws Exception264      */265     public String[] readExcelByCell(int sheetNo, int cellNo) throws Exception {266         String[] cellData = null;267         XSSFSheet sheet = wb.getSheetAt(sheetNo - 1);268         int rowCount = sheet.getLastRowNum();269         cellData = new String[rowCount + 1];270         for (int i = 0; i <= rowCount; i++) {271             cellData[i] = readExcelByRowAndCell(sheetNo - 1, i, cellNo - 1);272         }273         return cellData;274     }275 276     /**277      * 关闭excel工作区,释放资源278      * 279      * @throws Exception280      */281     @Override282     public void close() {283         if (wb != null) {284             try {285                 wb.close();286             } catch (IOException e) {287                 e.printStackTrace();288             } finally {289                 wb = null;290             }291         }292     }293 }
  1 /*  2  * ExcelParse.java  3  *   4  * 2016-1-6 下午4:45:53  5  *   6  * RecluseKapoor  7  *    8  * Copyright © 2016, RecluseKapoor. All rights reserved.  9  *  10  */ 11 package com.rk.pub.poi; 12  13 import com.rk.pub.poi.excel.ExcelParse2003; 14 import com.rk.pub.poi.excel.ExcelParse2007; 15 import com.rk.pub.poi.excel.IExcelParse; 16  17 /** 18  * @Title:recluse-Excel文件解析工具类(兼容2003和2007版本Excel) 19  *  20  * @Description: 该工具类用于解析Excel文件,同时兼容2003版和2007版Excel文件的解析,且随时可以进行新版本的扩展, 21  *               <p> 22  *               若要支持新版本Excel格式的解析,只需要在excle包下新增一个实现了IExcelParse接口的实现类, 23  *               <p> 24  *               在新增的实现类中实现新对版本Excel格式的解析的功能代码即可 ; 该扩展方法可以最大程度的实现解耦 。 25  *               <p> 26  *  27  * @Company: 卡普工作室 28  *  29  * @Website: http://www.cnblogs.com/reclusekapoor/ 30  *  31  * @author: RecluseKapoor 32  *  33  * @CreateDate:2016-1-6 下午9:43:56 34  *  35  * @version: 1.0 36  *  37  * @lastModify: 38  *  39  */ 40 public class ExcelParse { 41  42     private IExcelParse excelParse = null; 43  44     /** 45      * 加载实例,根据不同版本的Excel文件,加载不同的具体实现实例 46      *  47      * @param path 48      * @return 49      */ 50     private boolean getInstance(String path) throws Exception { 51         path = path.toLowerCase(); 52         if (path.endsWith(".xls")) { 53             excelParse = new ExcelParse2003(); 54         } else if (path.endsWith(".xlsx")) { 55             excelParse = new ExcelParse2007(); 56         } else { 57             throw new Exception("对不起,目前系统不支持对该版本Excel文件的解析。"); 58         } 59         return true; 60     } 61  62     /** 63      * 获取excel工作区 64      *  65      * @param path 66      * @throws Exception 67      */ 68     public void loadExcel(String filePathAndName) throws Exception { 69         getInstance(filePathAndName); 70         excelParse.loadExcel(filePathAndName); 71     } 72  73     /** 74      * 获取sheet页名称 75      *  76      * @param sheetNo 77      * @return 78      */ 79     public String getSheetName(int sheetNo) { 80         return excelParse.getSheetName(sheetNo); 81     } 82  83     /** 84      * 获取sheet页数 85      *  86      * @return 87      * @throws Exception 88      */ 89     public int getSheetCount() throws Exception { 90         return excelParse.getSheetCount(); 91     } 92  93     /** 94      * 获取sheetNo页行数 95      *  96      * @param sheetNo 97      * @return 98      * @throws Exception 99      */100     public int getRowCount(int sheetNo) {101         return excelParse.getRowCount(sheetNo);102     }103 104     /**105      * 获取sheetNo页行数(含有操作或者内容的真实行数)106      * 107      * @param sheetNo108      * @return109      * @throws Exception110      */111     public int getRealRowCount(int sheetNo) {112         return excelParse.getRealRowCount(sheetNo);113     }114 115     /**116      * 读取第sheetNo个sheet页中第rowNo行第cellNo列的数据117      * 118      * @param sheetNo119      *            sheet页编号120      * @param rowNo121      *            行号122      * @param cellNo123      *            列号124      * @return 返回相应的excel单元格内容125      * @throws Exception126      */127     public String readExcelByRowAndCell(int sheetNo, int rowNo, int cellNo)128             throws Exception {129         return excelParse.readExcelByRowAndCell(sheetNo, rowNo, cellNo);130     }131 132     /**133      * 读取指定SHEET页指定行的Excel内容134      * 135      * @param sheetNo136      *            指定SHEET页137      * @param lineNo138      *            指定行139      * @return140      * @throws Exception141      */142     public String[] readExcelByRow(int sheetNo, int rowNo) throws Exception {143         return excelParse.readExcelByRow(sheetNo, rowNo);144     }145 146     /**147      * 读取指定SHEET页指定列中的数据148      * 149      * @param sheetNo150      *            指定SHEET页151      * @param cellNo152      *            指定列号153      * @return154      * @throws Exception155      */156     public String[] readExcelByCell(int sheetNo, int cellNo) throws Exception {157         return excelParse.readExcelByCell(sheetNo, cellNo);158     }159 160     /**161      * 关闭excel工作区,释放资源162      * 163      */164     public void close() {165         excelParse.close();166     }167 168     /**169      * 测试方法170      * 171      * @param args172      */173     public static void main(String[] args) {174         ExcelParse parse = new ExcelParse();175         try {176             // 加载excel文件177             parse.loadExcel("E:\\2007.xls");178             // 统计sheet页数179             System.out.println(parse.getSheetCount());180             // 读取单元格信息181             System.out.println(parse.readExcelByRowAndCell(1, 1, 1));182         } catch (Exception e) {183             e.printStackTrace();184         } finally {185             // 释放资源186             parse.close();187         }188     }189 190 }

 

  相关解决方案