java poi reader
2014-05-22 23:23
120 查看
注意:
(1)判断行的最大数量建议使用sheet.getLastRowNum();
(2)判断每行最大列数建议使用row.getLastCellNum();
getPhysicalNumberOfRows()获取的是物理行数,也就是不包括那些空行(隔行)的情况。
getLastRowNum()获取的是最后一行的编号(编号从0开始)。
int org.apache.poi.ss.usermodel.Sheet.getPhysicalNumberOfRows()
Returns the number of physically defined rows (NOT the number of rows in the sheet)
int org.apache.poi.ss.usermodel.Sheet.getLastRowNum()
Gets the last row on the sheet
Returns:last row contained in this sheet (0-based)
(1)判断行的最大数量建议使用sheet.getLastRowNum();
(2)判断每行最大列数建议使用row.getLastCellNum();
getPhysicalNumberOfRows()获取的是物理行数,也就是不包括那些空行(隔行)的情况。
getLastRowNum()获取的是最后一行的编号(编号从0开始)。
int org.apache.poi.ss.usermodel.Sheet.getPhysicalNumberOfRows()
Returns the number of physically defined rows (NOT the number of rows in the sheet)
int org.apache.poi.ss.usermodel.Sheet.getLastRowNum()
Gets the last row on the sheet
Returns:last row contained in this sheet (0-based)
public class ImportExcel { private static Logger log = LoggerFactory.getLogger(ImportExcel.class); /** * 工作薄对象 **/ private Workbook wb; /** * 工作表对象 **/ private Sheet sheet; /** * 标题行号 */ private int headerNum; /** * 构造函数 * @param path 导入文件,读取第1个工作表 * @param headerNum 标题行号,数据行等于标题行号+1 * @throws InvalidFormatException * @throws IOException */ public ImportExcel(String fileName, int headerNum) throws InvalidFormatException, IOException { this(new File(fileName), headerNum); } /** * 构造函数 * @param path 导入文件对象,读取第1个工作表 * @param headerNum 标题行号,数据行等于标题行号+1 * @throws InvalidFormatException * @throws IOException */ public ImportExcel(File file, int headerNum) throws InvalidFormatException, IOException { this(file, headerNum, 0); } /** * 构造函数 * @param path 导入文件 * @param headerNum 标题行号,数据行等于标题行号+1 * @param sheetIndex 工作表编号,以0开始 * @throws InvalidFormatException * @throws IOException */ public ImportExcel(String fileName, int headerNum, int sheetIndex) throws InvalidFormatException, IOException { this(new File(fileName), headerNum, sheetIndex); } /** * 构造函数 * @param path 导入文件对象 * @param headerNum 标题行号,数据行等于标题行号+1 * @param sheetIndex 工作表编号,以0开始、 * @throws InvalidFormatException * @throws IOException */ public ImportExcel(File file, int headerNum, int sheetIndex) throws InvalidFormatException, IOException { this(file.getName(), new FileInputStream(file), headerNum, sheetIndex); } /** * 构造函数 * @param file 导入文件对象 * @param headerNum 标题行号,数据行等于标题行号+1 * @param sheetIndex 工作表编号,以0开始、 * @throws InvalidFormatException * @throws IOException */ /** * 构造函数 * @param path 导入文件对象 * @param headerNum 标题行号,数据行等于标题行号+1 * @param sheetIndex 工作表编号,以0开始、 * @throws InvalidFormatException * @throws IOException */ public ImportExcel(String fileName, InputStream is, int headerNum, int sheetIndex) throws InvalidFormatException, IOException { if (StringUtils.isBlank(fileName)){ throw new RuntimeException("导入文档为空!"); }else if(fileName.toLowerCase().endsWith("xls")){ this.wb = new HSSFWorkbook(is); }else if(fileName.toLowerCase().endsWith("xlsx")){ this.wb = new XSSFWorkbook(is); }else{ throw new RuntimeException("文档格式不正确?"); } if (this.wb.getNumberOfSheets()<sheetIndex){ throw new RuntimeException("文档中没有工作表!"); } this.sheet = this.wb.getSheetAt(sheetIndex); this.headerNum = headerNum; log.debug("Initialize success."); } /** * 获取行对象 * @param rownum * @return */ public Row getRow(int rownum){ return this.sheet.getRow(rownum); } /** * 获取数据行号 * @return */ public int getDataRowNum(){ return headerNum+1; } /** * 获取工作表中的最后一行的行号,以0开始 * @return */ public int getLastDataRowNum(){ return this.sheet.getLastRowNum(); } /** * 获取一行记录总的列数 * @return */ public int getLastCellNum(){ return this.getRow(headerNum).getLastCellNum(); } /** * 获取单元格的值 * @param row 获取的行 * @param column 获取单元格列号 * @return 单元格的值 */ public Object getCellValue(Row row, int column){ Object val = ""; try{ Cell cell = row.getCell(column); if (cell != null){ if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC){ val = cell.getNumericCellValue(); }else if (cell.getCellType() == Cell.CELL_TYPE_STRING){ val = cell.getStringCellValue(); }else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA){ val = cell.getCellFormula(); }else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){ val = cell.getBooleanCellValue(); }else if (cell.getCellType() == Cell.CELL_TYPE_ERROR){ val = cell.getErrorCellValue(); } } }catch (Exception e) { return val; } return val; } /** * 导入测试 */ public static void main(String[] args) throws Throwable { ImportExcel ei = new ImportExcel("import.xls", 0); System.out.println(ei.getLastDataRowNum()); System.out.println(ei.getDataRowNum()); for (int i = ei.getDataRowNum(); i <= ei.getLastDataRowNum(); i++) { Row row = ei.getRow(i); System.out.println("Row num:"+i); for (int j = 0; j < ei.getLastCellNum(); j++) { Object val = ei.getCellValue(row, j); System.out.print(val+", "); } System.out.print("\n"); } } }
相关文章推荐
- java.io.Reader 和 java.io.InputStream 的区别
- 如何使用Java POI生成Excel表文件 !
- POI_Java里访问Excel,Word等格式的文件
- Java处理文件的方法(FileInputStream、FileReader、File*)
- java.io.Reader 和 java.io.InputStream的区别
- java.lang.NoClassDefFoundError:org/springframework/beans/factory/support/ReaderContext 问题的解决办法
- CELEBRATE ON MY FIRST TASK~~~~~related skill~~~Jakata Poi HSSF:纯java的Excel解决方案
- POI ,Java 操作 Excel 实现行的插入(insert row)
- JAVA POI 读EXCEL DEMO
- Apache Project:POI-HSSF - Java API To Access Microsoft Excel Format Files(ZT)
- 利用Java 创建和读取Excel文档(POI方法)
- Jakata Poi HSSF:纯java的Excel解决方案总结
- java处理Excel(POI包)
- ConsoleReader.java
- 如何使用Java POI生成Excel表文件
- POI-操作Word和Excel的纯Java解决方案
- I/O流的设计(Java的InputStream/OuputStream和Reader/Writer的C++实现)
- java中用poi读取Excel文件
- Java操作Excel基础--POI之HSSF
- Java操作Excel的2种方法--Poi,jExcelApi