请通过浏览器功能收藏网页

java读取EXCEL文件 jxl 和 poi 两套API分别读取实例 实用小功能

发布时间:2018-06-22 16:29:08  作者:本站编辑  来源:本站原创  浏览次数:
www.javainfo.com.cn 上干货 欢迎收藏



java读取EXCEL文件  低版本的 jxl api是一个选择  , 还有一个最新的api poi 

当然其读取的EXCEL版本是不一样的  jxl 只能读取 EXCEL 07及以前的文件;

POI可以读取 07及以上版本的EXCEL文件, 下面是两套API读取文件的不同方式


本实例的API JAR包资源 如下:

jxl.jar   资源包请参考 JXL 导出EXCEL文章

 

poi-3.16.jar                 poi jars.zip

poi-examples-3.16.jar

poi-excelant-3.16.jar

poi-ooxml-3.16.jar

poi-ooxml-schemas-3.16.jar

poi-scratchpad-3.16.jar


代码上:


         public static void main(String[] args) throws Exception {

ReadXls rf = new ReadXls();

String s = "";

s = rf.readEXCEL2007("c:\\gjtest.xlsx");

System.out.println(s);

}


// 读取xls文件

@SuppressWarnings("deprecation")

public String readEXCEL(String file) throws IOException {

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));// 创建对Excel工作簿文件的引用

for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {

if (null != workbook.getSheetAt(numSheets)) {

HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet

for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet

.getLastRowNum(); rowNumOfSheet++) {

if (null != aSheet.getRow(rowNumOfSheet)) {

HSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行

for (short cellNumOfRow = 0; cellNumOfRow <= aRow

.getLastCellNum(); cellNumOfRow++) {

StringBuilder content = new StringBuilder();

if (null != aRow.getCell(cellNumOfRow)) {

HSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值

if (this.convertCell(aCell).length() > 0) {

content.append(this.convertCell(aCell));

}

}

System.out.print(content);

}

}

System.out.println("\n");

}

}

}

return  null;//content.toString();

}


// 读取xlsx文件

public String readEXCEL2007(String file) throws IOException {

XSSFWorkbook workbook = new XSSFWorkbook(file);

for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {

if (null != workbook.getSheetAt(numSheets)) {

XSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet

System.out.println(aSheet.getSheetName());

for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet

.getLastRowNum(); rowNumOfSheet++) {

//System.out.println(rowNumOfSheet);

if (null != aSheet.getRow(rowNumOfSheet)) {

XSSFRow aRow = aSheet.getRow(rowNumOfSheet); // 获得一个行

StringBuilder content = new StringBuilder();

for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {

if (null != aRow.getCell(cellNumOfRow)) {

XSSFCell aCell = aRow.getCell(cellNumOfRow);// 获得列值

//System.out.print(this.convertCell(aCell));

if (this.convertCell(aCell).length() > 0) {

content.append(this.convertCell(aCell) +"  ");

}

}

//content.append("\n");

}

System.out.print(content.toString());

}

System.out.println("\n");

}

}

}

return "";//content.toString();

}



      

        /**

* 获取单元格内的数据

* @param cell

* @return

*/

private String convertCell(Cell cell) {

NumberFormat formater = NumberFormat.getInstance();

formater.setGroupingUsed(false);

String cellValue = "";

if (cell == null) {

return cellValue;

}

switch (cell.getCellType()) {

case HSSFCell.CELL_TYPE_NUMERIC:

cellValue = formater.format(cell.getNumericCellValue());

break;

case HSSFCell.CELL_TYPE_STRING:

cellValue = cell.getStringCellValue();

break;

case HSSFCell.CELL_TYPE_BLANK:

cellValue = cell.getStringCellValue();

break;

case HSSFCell.CELL_TYPE_BOOLEAN:

cellValue = Boolean.valueOf(cell.getBooleanCellValue()).toString();

break;

case HSSFCell.CELL_TYPE_ERROR:

cellValue = String.valueOf(cell.getErrorCellValue());

break;

default:

cellValue = "";

}

return cellValue.trim();

}



如有疑问 请留言 欢迎提供建议

评论已有 0