解析Excel的包很多,之前用的是jxl,但是jxl只能是解析Excel2003即office兼容版。

后来发现一个Apache的开源包,POI,这个可以处理xls和xlsx扩展名的Excel文件。

POI依赖jar包下载:http://download.csdn.net/detail/gopain/8200713

需要的jar包:

给一份代码供参考:

package cn.gopain.serverTeacher;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
/以下为POI需要的类库
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.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/
import com.ccbupt.kaoshi.dao.XueShengLinShi;import cn.gopain.comm.define.KAOSHI_FILE;
import cn.gopain.main.Encrypt;/*** @author gopain* 测试文件读取,解析考题文件。仅测试*/
public class ReadFile {/*** @param args*/public static void main(String[] args) {HSSFWorkbook hssfWorkbook = null;//Excel2003try {hssfWorkbook = new HSSFWorkbook(new FileInputStream("2014-2015-1体育_xls.xls"));} catch (IOException e1) {e1.printStackTrace();}if (hssfWorkbook == null) System.out.println("File not found");// Read the Sheetfor (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {//遍历每一个sheetHSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);if (hssfSheet == null) {continue;}// Read the Rowfor (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {//遍历一行数据HSSFRow hssfRow = hssfSheet.getRow(rowNum);//获取一行的数据对象if (hssfRow != null) {XueShengLinShi x = new XueShengLinShi();HSSFCell yuanxi = hssfRow.getCell(0);//获取列数据,0为第一列数据,以此类推HSSFCell banji = hssfRow.getCell(1);HSSFCell xuehao = hssfRow.getCell(2);HSSFCell xingming = hssfRow.getCell(3);System.out.println(getValue(yuanxi));//获取该单元的数据System.out.println(getValue(banji));System.out.println(getValue(xuehao));System.out.println(getValue(xingming));try {//此处是获取一列可能存在的数据,可以不用try catch,该单元为空也会正常读取。HSSFCell mima = hssfRow.getCell(4);System.out.println(getValue(mima));} catch (Exception e) {e.printStackTrace();
//                      return readXLSX_3(stream);}}}}/*XSSFWorkbook xssfWorkbook = null;try {xssfWorkbook = new XSSFWorkbook("2014-2015-1体育.xlsx");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}if (null == xssfWorkbook) System.out.println("File not found!");for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);if (xssfSheet == null) {continue;}// Read the Rowfor (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {XSSFRow xssfRow = xssfSheet.getRow(rowNum);if (xssfRow != null) {XueShengLinShi x = new XueShengLinShi();XSSFCell yuanxi = xssfRow.getCell(0);XSSFCell banji = xssfRow.getCell(1);XSSFCell xuehao = xssfRow.getCell(2);XSSFCell xingming = xssfRow.getCell(3);System.out.println(getValue(yuanxi));System.out.println(getValue(banji));System.out.println(getValue(xuehao));System.out.println(getValue(xingming));try {XSSFCell mima = xssfRow.getCell(4);System.out.println(getValue(mima));} catch (Exception e) {e.printStackTrace();
//                      return readXLSX_3(stream);}
//                  xueshengs.add(x);}}}*/
//      KAOSHI_FILE in = new KAOSHI_FILE();
//      ReadFile m = new ReadFile();
//      m.readFile(in, "KAOTI_ZIP", "化工大学-C语言-教学组", ".5IC");}@SuppressWarnings("static-access")private static String getValue(HSSFCell hssfCell) {if(null == hssfCell) return "";
//      return String.valueOf(hssfCell.getStringCellValue());//不可以直接全部按String读取if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {//boolean类型数据return String.valueOf(hssfCell.getBooleanCellValue());} else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {//numeric数据return String.valueOf(hssfCell.getNumericCellValue());} else {return String.valueOf(hssfCell.getStringCellValue());//普通String}}@SuppressWarnings("static-access")private static String getValue(XSSFCell xssfRow) {if (xssfRow == null) return "";
//      return String.valueOf(xssfRow.getStringCellValue());if (xssfRow.getCellType() == xssfRow.CELL_TYPE_BOOLEAN) {return String.valueOf(xssfRow.getBooleanCellValue());} else if (xssfRow.getCellType() == xssfRow.CELL_TYPE_NUMERIC) {return String.valueOf(xssfRow.getNumericCellValue());} else {return String.valueOf(xssfRow.getStringCellValue());}}}

以上为读取Excel文件代码,请勿直接使用,稍作修改即可,请先引入依赖的jar包。

[JAVA] java读取Excel文件,Apache POI相关推荐

  1. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中

    转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...

  2. java解析xlsb文件_读取XLSB文件Apache POI的异常java.io.CharConversionException

    我正在开发一种使用Apache POI读取excel xlsb文件的Java应用程序,但是在读取时出现异常,我的代码如下: import java.io.IOException; import jav ...

  3. java eventusermodel_异常读取XLSB文件Apache POI java.io.CharConversionException

    我正在开发一个使用Apache POI读取excel xlsb文件的 Java应用程序,但是在读取它时遇到异常,我的代码如下: import java.io.IOException; import j ...

  4. java如何读取excel文件

    我在测试的时候经常需要去改动case,如果把所有case直接写在单元测试中,非常冗余,我希望可以直接从excel去读取我的测试数据,经过几次试验终于成功了,读取excel主要借助poi jar包,源码 ...

  5. java代码读取excel文件,同时兼容2003和2007

    后台服务器需要一个读取excel文件的工具,查了些资料,很多不能同时兼容2003和2007,整理了一下,加了一个判断,现在能同时兼容2003和2007,并且可以选择从表格的第几行开始读取.主要用到了a ...

  6. Java多线程读取excel文件_解决springboot 多线程使用MultipartFile读取excel文件内容报错问题...

    springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async 前端页面 报错信息 java.io.FileNotFoundException: C:\ ...

  7. java代码读取excel文件_Java 读取excel 文件流代码实例

    这篇文章主要介绍了Java 读取excel 文件流代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 public static vo ...

  8. java获取excel文件第一行_java - 在Java中读取Excel文件,但第一行除外 - 堆栈内存溢出...

    我正在尝试从使用xlsx文件的JasperReport模板自动创建报告,我用来从excel文件读取的方法是这样的: String[] columnNames = new String[]{" ...

  9. java中读取excel数据类型_在Java中读取Excel文件的内容

    利用JExcelApi来动态生成excel文档 首先,请到http://www.andykhan.com/jexcelapi/index.html下载java excel api,主页上同时有比较详细 ...

  10. 关于使用Java后台导入excel文件,读取数据后,更新数据库,并返回数据给到前端的相关问题总结

    在之前的项目中,使用到了Java后台读取excel文件数据的功能点,本想着该功能点已经做过了,这一类的应该都大差不离,不过在刚结束的一个项目中,现实给我深深的上了一课,特此编写此片博客,以作记录,并给 ...

最新文章

  1. 使用input做简单的上传图片
  2. Jekyll添加FancyBox 插件
  3. 【数字信号处理】离散时间信号 ( 模拟信号、离散时间信号、数字信号 | 采样导致时间离散 | 量化导致幅度离散 )
  4. HyperLedger Fabric 交易流程
  5. redis集群搭建(基于docker)
  6. TypeScript 交叉类型(intersection type)
  7. Java BigDecimal Rounding Mode
  8. 基于动态混合高斯模型的商品价格模型算法
  9. 【C++学习】C++中的强制转换
  10. java swing画三角形_如何使用Java Swing编写肮脏的渐变绘制边框
  11. npm+node+cordova+ionic 版本匹配
  12. 14. JavaScript Date(日期)对象
  13. JAVA基础编程——简介
  14. button3 电脑上mouse,自定义鼠标按键(X-Mouse Button Control)
  15. Spring Cloud 微服务架构图
  16. CCF201809-4 再卖菜(100分)
  17. 服务器虚拟化实施方案可研报告,服务器虚拟化实施方案可研可行报告报告(2017word资料).doc...
  18. 借助 Finder 的Jitouch插件实现 Chrome 三指在 New Tab 中打开链接
  19. 一个屌丝程序猿的人生(一百一十八)
  20. 咸鱼Micropython—SPI

热门文章

  1. heapdump 使用简述
  2. 高效程序员工作法(八)
  3. 定时执行python脚本
  4. Filemonitor 2.2.0 发布,文件监控工具
  5. ubuntu 装机技巧 双系统引导修复boot-repair 换源 github安装 截图 文件夹中文名称改为英文 deb包的安装方法 更改时间
  6. python怎么定义整数数组_python中输入整数数组长度python基础语法
  7. .NET中的托管资源与非托管资源
  8. golang 实现代付充值系统
  9. 2023年太原理工大学MTI英语笔译专业考研成功经验分享
  10. 金融科技方兴未艾 平安金融云引业界关注