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 条评论
登录 后参与评论

相关文章

来自专栏程序员叨叨叨

当你刷新RecyclerView程序崩掉的时候

今天测试 APP的时候发现一个有关RecyclerView的BUG,我们先上图来看看崩溃情况:

1332
来自专栏大数据智能实战

spark redis 中碰到java.net.SocketTimeoutException: Read timed out问题的解决

最近在写入redis的时候,程序跑着跑着会发现碰到这样的问题。 redis.clients.jedis.exceptions.JedisConnectionEx...

4666
来自专栏圣杰的专栏

Asp.net mvc 知多少(三)

本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想...

2096
来自专栏desperate633

浅谈对MVC模式的理解(通过一个servlet实例)创建一个简单的啤酒顾问servlet程序总结

通过将一个servlet程序进行改版,加入MVC的设计思想,浅谈对MVC模式的理解与运用

803
来自专栏Java架构师历程

Struts2的工作原理

在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处?

964
来自专栏Android 研究

APK安装流程详解1——有关"安装ing"的实体类概述

该类包含了从AndroidManifest.xml文件中收集的所有信息。 PackageInfo.java源码地址 通过源码我们知道PackageInfo是...

1632
来自专栏别先生

Ajax异步验证登陆或者注册

首先介绍一个不错的学习Ajax的中文网站:http://www.w3school.com.cn/ajax/index.asp AJAX = 异步 JavaScr...

3416
来自专栏软件工程师成长笔记

CXF实现webService服务

Web Service也叫XML Web Service,WebService是一种可以接收从Internet或者Internet上的其它系统中传递过来的请求,...

1853
来自专栏点滴积累

Cesium中Clock控件及时间序列瓦片动态加载

前言 前面已经写了两篇博客介绍Cesium,一篇整体上简单介绍了Cesium如何上手,还有一篇介绍了如何将Cesium与分布式地理信息处理框架Geotrelli...

4344
来自专栏along的开发之旅

图解JSP运行原理和过程

下面代码通过注解来处理/hello的请求, 并在代码中将请求转发到上述hello.jsp.

881

扫码关注云+社区

领取腾讯云代金券