Java使用poi包读取execl

  Execl分为两个版本,后缀名分别为.xls和.xlsx,读取两种不同版本的execl使用不同的类,所需包直接从apache官网下载导入即可

一、读取.xls类型的execl文件

/**

*读取后缀名为.xls的execl文件

*

*@param filePath

*@return

*@throws Exception

*/

public static boolean readXls(String filePath){

InputStream is=null;

HSSFWorkbook hssfWorkbook=null;

try {

is = new FileInputStream(filePath);

hssfWorkbook = new HSSFWorkbook(is);

// 读取第一张execl表

HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);

int rowNum = 0;

DecimalFormat df = new DecimalFormat("#");

boolean hasMessyCode=false;

for (rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {

HSSFRow row = hssfSheet.getRow(rowNum);

int cellNumber=row.getLastCellNum();

for(int cellNum=0;cellNum<=cellNumber;cellNum++){

HSSFCell cell=row.getCell(cellNum);

switch (cell.getCellType()) {

case XSSFCell.CELL_TYPE_STRING:     //字符串类型

String cell=row.getCell(cellNum).getStringCellValue();   //进行逻辑处理

break;

case XSSFCell.CELL_TYPE_NUMERIC:   //数值类型

String cell=df.format(cell.getNumericCellValue()).toString();

break;

case XSSFCell.CELL_TYPE_BOOLEAN:   //布尔类型

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

break;

case XSSFCell.CELL_TYPE_FORMULA:  //表达式类型

String cell=cell.getCellFormula()+"";

break;

default:

break;

}

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

canOpen=0;

}

return false;

}

二、读取.xlsx类型的execl文件

/**

*读取后缀名为。xlsx的execl文件

*

*@param filePath

*@return

*@throws Exception

*/

public static boolean readXlsx(String filePath){

InputStream is=null;

XSSFWorkbook xssfWorkbook=null;

try {

is = new FileInputStream(filePath);

xssfWorkbook = new XSSFWorkbook(is);

// 读取第一个execl表

XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);

int rowNum = 0;

DecimalFormat df = new DecimalFormat("#");

boolean hasMessyCode=false;

for (rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {

XSSFRow row = xssfSheet.getRow(rowNum);

int cellNumber=row.getLastCellNum();

for(int cellNum=0;cellNum<=cellNumber;cellNum++){

//校验cell值

XSSFCell cell=row.getCell(cellNum);

switch (cell.getCellType()) {

case XSSFCell.CELL_TYPE_STRING:

String cellStr=row.getCell(cellNum).getStringCellValue();

break;

case XSSFCell.CELL_TYPE_NUMERIC:

String cellStr=df.format(cell.getNumericCellValue()).toString();

break;

case XSSFCell.CELL_TYPE_BOOLEAN:

String cellStr=String.valueOf(cell.getBooleanCellValue());

break;

case XSSFCell.CELL_TYPE_FORMULA:

String cellStr=cell.getCellFormula()+"";

break;

default:

break;

}

}

}

} catch (Exception e) {

// TODO Auto-generated catch block

canOpen=0;

e.printStackTrace();

}

return false;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近由于工作需要,需要写一个工具,实现搜索功能,数据来源为excel表格。目前主要实现方式为两种,一种是基于jxl...
    依静轩阅读 6,657评论 1 9
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx阅读 8,466评论 0 16
  • 转自链接 3.项目实践 3.1基于.xls模板生成Excel文件 3.2生成九九乘法表 3.3生成一张工资单 3....
    腿毛裤阅读 3,735评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,564评论 18 399
  • 西风游荡三千里,黄芦好色啼乌起。无语问添衣,窗前月又西。 离人常入梦,脉脉愁相送。又是异乡秋,残红泪欲流。
    Harvest收获阅读 939评论 72 137

友情链接更多精彩内容