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接口来读入文件并统一处理。

JAVA的POI操作Excel的更多相关文章

  1. java里poi操作excel的工具类(兼容各版本)

    转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...

  2. java使用POI操作excel文件,实现批量导出,和导入

    一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...

  3. Java POI操作Excel注意点

    excel的行索引和列索引都是从0开始,而行号和列号都是从1开始 POI·操作excel基本上都是使用索引 XSSFRow对象的 row.getLastCellNum() 方法返回的是当前行最后有效列 ...

  4. (一)JAVA使用POI操作excel

    1,Poi 简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能 PO ...

  5. Java使用 POI 操作Excel

    Java中常见的用来操作 Excel 的方式有2种:JXL和POI.JXL只能对 Excel进行操作,且只支持到 Excel 95-2000的版本.而POI是Apache 的开源项目,由Java编写的 ...

  6. Java使用POI操作Excel文件

    1.简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文件读和写的功能. 2.依赖的jar包 <!-- ex ...

  7. java用POI操作excel——随便写一下,最基础的东西

    前两天部门实施在做一个东西,需要把客户放在Excel中的数据导入到Oracle数据库中,我就想着直接写一个模板,必要的时候改一下实体类应该可以解放实施同事的双手,不过在实际写的过程中,还是碰到很多问题 ...

  8. Java 使用POI操作EXCEL及测试框架搭建、测试开发的一些想法

    无论是UI自动化测试还是接口自动化测试都需要进行数据驱动,一般很常见的一种方式就是用excel来管理数据,那么就涉及到一些代码对EXCEL的操作,之前我们介绍过用CSV来处理EXCEL,但是它的功能还 ...

  9. JAVA使用POI操作excel

    文中处理的excel是2003年以前的版本,使用HSSFworkbook,如果处理2007版本以后的excel,用XSSFworkbook,对于二者的兼容性问题,可参考 http://blog.csd ...

随机推荐

  1. JavaEE连接数据库练习

    登录端 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncod ...

  2. 获取进程CPU占用率

    获取进程CPU占用率 // 时间转换 static __int64 file_time_2_utc(const FILETIME* ftime) { LARGE_INTEGER li; li.LowP ...

  3. CGI概念

    CGI(通用网关接口,Common Gateway Interface) CGI是Web服务器与请求处理程序之间传输数据的一种标准,保证Web服务器传递过来的数据是标准格式的,其程序须运行在网络服务器 ...

  4. WCF学习之旅—WCF概述(四)

    一.WCF概述 1) 什么是WCF? Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终 ...

  5. distribution 中一直在运行 waitfor delay @strdelaytime 语句

    Replication 自动创建来一个 Job:Replication monitoring refresher for distribution,这个Agent执行一个sp: dbo.sp_repl ...

  6. AngularJS之代码风格36条建议【一】(九)

    前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJ ...

  7. linux中断与异常

    看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...

  8. xcode6 使用MJRefresh,Too many arguments to function call, expected 0, have *

    转载自:  http://blog.csdn.net/wsjshx/article/details/40743291 将XCode升级到6后,报Too many arguments to functi ...

  9. 在IE11下设置SharePoint Server 2013却遇到“需要 Internet Explorer 才能使用此功能。”的解决办法

    就在昨天顺利升级到Windows 8.1 随之IE也升级到了IE11,但是当打开IE11设置SharePoint Server 2013的时候遇到了一些小情况: Figure 1使用Windows 8 ...

  10. Android 数据库框架OrmLite的使用(二)

    前面说了OrmLite的基本使用,现在说下更规范的做法以及常用的一些功能. 1.DatabaseHelper package com.example.ormlite.db; import java.s ...