java解析excel文件的方法

 更新时间:2017年02月04日 17:20:44   作者:wanghjbuf  
这篇文章主要介绍了java解析excel文件的方法,这里整理相关的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

建立工程前需要导入POI包。POI相关jar包下载地址:http://poi.apache.org/download.html

1.解析.xlsx后缀名的的EXCEL文件:

package com.shuai.hello;  
  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
  
import org.apache.poi.hssf.usermodel.HSSFCell;  
import org.apache.poi.xssf.usermodel.XSSFCell;  
import org.apache.poi.xssf.usermodel.XSSFRow;  
import org.apache.poi.xssf.usermodel.XSSFSheet;  
import org.apache.poi.xssf.usermodel.XSSFWorkbook;  
  
public class ReadExcel {  
  public static void main(String[] args) throws IOException {  
      
    //File file = new File("C:/Users.xlsx");  
    InputStream stream = new FileInputStream("C:/Users.xlsx");  
  
    XSSFWorkbook xssfWorkbook = new XSSFWorkbook(stream);  
    XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);  
  
    int rowstart = xssfSheet.getFirstRowNum();  
    int rowEnd = xssfSheet.getLastRowNum();  
    for(int i=rowstart;i<=rowEnd;i++)  
    {  
      XSSFRow row = xssfSheet.getRow(i);  
      if(null == row) continue;  
      int cellStart = row.getFirstCellNum();  
      int cellEnd = row.getLastCellNum();  
  
      for(int k=cellStart;k<=cellEnd;k++)  
      {  
        XSSFCell cell = row.getCell(k);  
        if(null==cell) continue;  
  
  
        switch (cell.getCellType())  
        {  
          case HSSFCell.CELL_TYPE_NUMERIC: // 数字  
            System.out.print(cell.getNumericCellValue()  
                + "\t");  
            break;  
          case HSSFCell.CELL_TYPE_STRING: // 字符串  
            System.out.print(cell.getStringCellValue()  
                + "\t");  
            break;  
          case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean  
            System.out.println(cell.getBooleanCellValue()  
                + "\t");  
            break;  
          case HSSFCell.CELL_TYPE_FORMULA: // 公式  
            System.out.print(cell.getCellFormula() + "\t");  
            break;  
          case HSSFCell.CELL_TYPE_BLANK: // 空值  
            System.out.println(" ");  
            break;  
          case HSSFCell.CELL_TYPE_ERROR: // 故障  
            System.out.println(" ");  
            break;  
          default:  
            System.out.print("未知类型  ");  
            break;  
        }  
  
      }  
      System.out.print("\n");  
    }  
  }  
}  
 
/*String fileType = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length()); 
InputStream stream = new FileInputStream(filePath); 
Workbook wb = null; 
if (fileType.equals("xls")) { 
 wb = new HSSFWorkbook(stream); 
} else if (fileType.equals("xlsx")) { 
 wb = new XSSFWorkbook(stream); 
} else { 
 System.out.println("您输入的excel格式不正确"); 
}*/  

2.解析后缀为.xls的EXCEL文件:

package com.shuai.hello;  
  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
  
import org.apache.poi.hssf.usermodel.HSSFCell;  
import org.apache.poi.hssf.usermodel.HSSFRow;  
import org.apache.poi.hssf.usermodel.HSSFSheet;  
import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
import org.apache.poi.poifs.filesystem.POIFSFileSystem;  
  
public class ReadXls {  
  public static void main(String[] args) throws IOException, IOException {  
    File file = new File("C:/Users/dengta/Desktop/ok1.xls");  
    POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));  
    HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);  
    HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);  
  
    int rowstart = hssfSheet.getFirstRowNum();  
    int rowEnd = hssfSheet.getLastRowNum();  
    for(int i=rowstart;i<=rowEnd;i++)  
    {  
      HSSFRow row = hssfSheet.getRow(i);  
      if(null == row) continue;  
      int cellStart = row.getFirstCellNum();  
      int cellEnd = row.getLastCellNum();  
  
      for(int k=cellStart;k<=cellEnd;k++)  
      {  
        HSSFCell cell = row.getCell(k);  
        if(null==cell) continue;  
        //System.out.print("" + k + " ");  
        //System.out.print("type:"+cell.getCellType());  
  
        switch (cell.getCellType())  
        {  
          case HSSFCell.CELL_TYPE_NUMERIC: // 数字  
                  System.out.print(cell.getNumericCellValue()  
                + "  ");  
            break;  
          case HSSFCell.CELL_TYPE_STRING: // 字符串  
            System.out.print(cell.getStringCellValue()  
                + "  ");  
            break;  
          case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean  
            System.out.println(cell.getBooleanCellValue()  
                + "  ");  
            break;  
          case HSSFCell.CELL_TYPE_FORMULA: // 公式  
            System.out.print(cell.getCellFormula() + "  ");  
            break;  
          case HSSFCell.CELL_TYPE_BLANK: // 空值  
            System.out.println(" ");  
            break;  
          case HSSFCell.CELL_TYPE_ERROR: // 故障  
            System.out.println(" ");  
            break;  
          default:  
            System.out.print("未知类型  ");  
            break;  
        }  
  
      }  
      System.out.print("\n");  
    }  
  }  
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java学习教程之定时任务全家桶

    Java学习教程之定时任务全家桶

    这篇文章主要给大家介绍了关于Java学习教程之定时任务全家桶的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java concurrency之互斥锁_动力节点Java学院整理

    Java concurrency之互斥锁_动力节点Java学院整理

    本文通过示例代码给大家介绍了Java concurrency之互斥锁的相关知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • MyBatis之foreach标签的用法及多种循环问题

    MyBatis之foreach标签的用法及多种循环问题

    这篇文章主要介绍了MyBatis之foreach标签的用法及多种循环问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Eclipse远程debug的步骤与注意事项

    Eclipse远程debug的步骤与注意事项

    今天小编就为大家分享一篇关于Eclipse远程debug的步骤与注意事项,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java8进行多个字段分组统计的实例代码

    Java8进行多个字段分组统计的实例代码

    在本篇文章里小编给大家分享的是关于Java8进行多个字段分组统计的实例代码,需要的朋友们可以学习下。
    2020-05-05
  • 解决使用httpclient传递json数据乱码的问题

    解决使用httpclient传递json数据乱码的问题

    这篇文章主要介绍了解决使用httpclient传递json数据乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • iReport生成pdf打印的实例代码

    iReport生成pdf打印的实例代码

    下面小编就为大家分享一篇iReport生成pdf打印的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • SpringBoot实现验证码的案例分享

    SpringBoot实现验证码的案例分享

    验证码可以有效防止其他人对某一个特定的注册用户用特定的程序,破解方式进行不断的登录尝试,我们其实很经常看到,登录一些网站其实是需要验证码的,所以本文给大家分享了SpringBoot实现验证码的案例,需要的朋友可以参考下
    2024-11-11
  • SpringBoot整合ELK实现日志监控

    SpringBoot整合ELK实现日志监控

    这篇文章主要为大家详细介绍了SpringBoot整合ELK实现日志监控的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • Java实现将图片上传到webapp路径下 路径获取方式

    Java实现将图片上传到webapp路径下 路径获取方式

    这篇文章主要介绍了Java实现将图片上传到webapp路径下 路径获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论