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接口来读入文件并统一处理。
JAVA的POI操作Excel的更多相关文章
- java里poi操作excel的工具类(兼容各版本)
转: java里poi操作excel的工具类(兼容各版本) 下面是文件内具体内容,文件下载: import java.io.FileNotFoundException; import java.io. ...
- java使用POI操作excel文件,实现批量导出,和导入
一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...
- Java POI操作Excel注意点
excel的行索引和列索引都是从0开始,而行号和列号都是从1开始 POI·操作excel基本上都是使用索引 XSSFRow对象的 row.getLastCellNum() 方法返回的是当前行最后有效列 ...
- (一)JAVA使用POI操作excel
1,Poi 简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能 PO ...
- Java使用 POI 操作Excel
Java中常见的用来操作 Excel 的方式有2种:JXL和POI.JXL只能对 Excel进行操作,且只支持到 Excel 95-2000的版本.而POI是Apache 的开源项目,由Java编写的 ...
- Java使用POI操作Excel文件
1.简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文件读和写的功能. 2.依赖的jar包 <!-- ex ...
- java用POI操作excel——随便写一下,最基础的东西
前两天部门实施在做一个东西,需要把客户放在Excel中的数据导入到Oracle数据库中,我就想着直接写一个模板,必要的时候改一下实体类应该可以解放实施同事的双手,不过在实际写的过程中,还是碰到很多问题 ...
- Java 使用POI操作EXCEL及测试框架搭建、测试开发的一些想法
无论是UI自动化测试还是接口自动化测试都需要进行数据驱动,一般很常见的一种方式就是用excel来管理数据,那么就涉及到一些代码对EXCEL的操作,之前我们介绍过用CSV来处理EXCEL,但是它的功能还 ...
- JAVA使用POI操作excel
文中处理的excel是2003年以前的版本,使用HSSFworkbook,如果处理2007版本以后的excel,用XSSFworkbook,对于二者的兼容性问题,可参考 http://blog.csd ...
随机推荐
- JavaEE连接数据库练习
登录端 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncod ...
- 获取进程CPU占用率
获取进程CPU占用率 // 时间转换 static __int64 file_time_2_utc(const FILETIME* ftime) { LARGE_INTEGER li; li.LowP ...
- CGI概念
CGI(通用网关接口,Common Gateway Interface) CGI是Web服务器与请求处理程序之间传输数据的一种标准,保证Web服务器传递过来的数据是标准格式的,其程序须运行在网络服务器 ...
- WCF学习之旅—WCF概述(四)
一.WCF概述 1) 什么是WCF? Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终 ...
- distribution 中一直在运行 waitfor delay @strdelaytime 语句
Replication 自动创建来一个 Job:Replication monitoring refresher for distribution,这个Agent执行一个sp: dbo.sp_repl ...
- AngularJS之代码风格36条建议【一】(九)
前言 其实在新学一门知识时,我们应该注意下怎么书写代码更加规范,从开始就注意养成一个良好的习惯无论是对于bug的查找还是走人后别人熟悉代码都是非常好的,利人利己的事情何乐而不为呢,关于AngularJ ...
- linux中断与异常
看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...
- 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 ...
- 在IE11下设置SharePoint Server 2013却遇到“需要 Internet Explorer 才能使用此功能。”的解决办法
就在昨天顺利升级到Windows 8.1 随之IE也升级到了IE11,但是当打开IE11设置SharePoint Server 2013的时候遇到了一些小情况: Figure 1使用Windows 8 ...
- Android 数据库框架OrmLite的使用(二)
前面说了OrmLite的基本使用,现在说下更规范的做法以及常用的一些功能. 1.DatabaseHelper package com.example.ormlite.db; import java.s ...