JAVA的POI操作Excel

1.1Excel简介

一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组成,列用大写英文字母表示,从A开始到Z共26列,然后再从AA到AZ又26列,再从BA到BZ再26列以此类推。行则使用数字表示,例如;A3 表示第三行第一列,E5表示第五行第五列。

1.2 POI工具包

JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel。而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel。

POI全称 Poor Obfuscation Implementation,直译为“可怜的模糊实现”,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能。官网:http://poi.apache.org ,POI支持office的所有版本,所以选择POI来讲解。

1.3 POI Hello World

在POI包中有如下几个主要对象和excel的几个对象对应:

HSSFWorkbook

Excel 工作簿workbook

HSSFSheet

Excel 工作表 sheet

HSSFRow

Excel 行

HSSFCell

Excel 单元格

利用以上几个对象,我们简单创建一个Excel工作表,往里面的C1单元格写入和读出“Hello World”:

        //创建工作簿
        HSSFWorkbook workbook=new HSSFWorkbook();
        //新建工作表
        HSSFSheet sheet=workbook.createSheet("刘洋");
        //创建行,行号作为参数,第一行从0开始计算
        HSSFRow row=sheet.createRow(0);
        //创建单元格,row已经确定行号,列好作为参数,第一列从0开始计算
        HSSFCell cell=row.createCell(2);
        //设置单元格(第一行第三列)
        cell.setCellValue("hello word");
        
        FileOutputStream outputStream=new FileOutputStream("d:\\工作簿.xls");
        
        workbook.write(outputStream);
        
        outputStream.close();

再利用上述几个对象将“Hello World”读取出来:

        //读取excel文件
        FileInputStream inputStream=new FileInputStream("d:\\工作簿.xls");
        //将输入流转换为workbook
        HSSFWorkbook workbook=new HSSFWorkbook(inputStream);
        //获取工作表
        HSSFSheet sheet=workbook.getSheetAt(0);
        //获取行
        HSSFRow row=sheet.getRow(0);
        //获取单元格(第一行第三列)
        HSSFCell cell=row.getCell(2);
        
        System.out.println("单元格内容为:"+cell.getStringCellValue());

1.4  POI与Excel

通过上门的例子我们知道如下信息:

1、  Excel 的工作簿对应POI的HSSFWorkbook对象;

2、  Excel 的工作表对应POI的HSSFSheet对象;

3、  Excel 的行对应POI的HSSFRow对象;

4、  Excel 的单元格对应POI的HSSFCell对象。

POI 也能对07以后的excel版本进行读写,读写方法和读写03版是一样的,只是对象名称变了;原来各对象的开头字母H变为X,操作方式不变。

1、 Excel 的工作簿对应POI的XSSFWorkbook对象;

2、 Excel 的工作表对应POI的XSSFSheet对象;

3、 Excel 的行对应POI的XSSFRow对象;

4、 Excel 的单元格对应POI的XSSFCell对象。

文件后缀为.xlsx

查看POI api文档,我们可以查询POI中所有这些对象的属性和方法。

从api文档中我们了解到:

HSSFWorkbook 和 XSSFWorkbook 都实现了Workbook接口;

HSSFSheet 和 XSSFSheet 实现了Sheet接口;

HSSFRow 和 XSSFRow 实现了Row接口;

HSSFCell 和 XSSFCell 实现了Cell接口;

因为这两类处理对象共同实现了对应的同一接口,届时将大大方便和简化了同时处理不同格式的excel文件的编码工作。如;在处理03和07版本的excel文件时利用统一的接口就可以做到分析两个版本的excel数据。

POI同时读入03和07版本的excel。

方法一:判断文件的名称后调用对应版本的读入方法。

方法二:根据不同版本用Workbook接口来读入文件并统一处理。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Strom序列化机制

      Storm 中的 tuple可以包含任何类型的对象。由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化、反序列化消...

    intsmaze-刘洋
  • Spring AOP不拦截从对象内部调用的方法原因

      拦截器的实现原理很简单,就是动态代理,实现AOP机制。当外部调用被拦截bean的拦截方法时,可以选择在拦截之前或者之后等条件执行拦截方法之外的逻辑,比如特殊...

    intsmaze-刘洋
  • java:JDBC详解

    JDBC全称为:Java DataBase Connectivity(java数据库连接)。

    intsmaze-刘洋
  • 用Python处理Excel文件

    我主要尝试了四种工具,在此并不会给出他们的排名,因为在不同的应用场景下,做出的选择会不同。

    py3study
  • 数据可视化,到底该用什么软件来展示数据?

    在大数据时代,我们身边充斥着各类信息,各种数据,人们的时间被打碎,注意力被分散,更多的人喜欢看图片而非文字,喜欢看图表而非数据。我们做数据展示时常用什么软件呢...

    钱塘数据
  • 网络协议 18 - CDN:家门口的小卖铺

        到现在为止,我们基本上已经了解了网络协议中的大部分常用协议,对于整个 HTTP 请求流程也较为熟悉了。从无到有后,我们就要考虑如何优化“有”这个过程,也...

    北国风光
  • 这就是CDN回源原理和CDN多级缓存啊!

    统计数据来自所有边缘节点上的请求记录,其中,对于没有缓存或缓存过期(可缓存)的请求以及不可缓存的请求,均计入回源请求中,其他直接命中缓存的,则为命中请求。

    程序员小明
  • 海康、大华安防摄像头网页无插件直播流媒体服务器EasyNVR对接EasyNVS失败如何解决?

    由于互联网的飞速发展,传统安防摄像头的视频监控直播与互联网直播相结合是大势所趋。传统安防的直播大多在一个局域网内,在播放的客户端上也是有所限制,一般都需要OCX...

    EasyNVR
  • Python入门必学:数据类型和变量的用

    Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。如果你觉得理解的还不够透彻...

    py3study
  • 【视频】教你如何在 Centos 8 下安装 Linux 最新版 QQ

    腾讯公司最近更新了Linux QQ,今天给大家通过视频分享如何在 Centos 8 下安装 Linux 最新版 QQ!

    叮当叮

扫码关注云+社区

领取腾讯云代金券