1.1.1. 简介 Apache POI

使用Apache POI 完成Excel读写操作

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

http://poi.apache.org/ 下载POI的jar包 ,包括以下内容

Excel 2003之前 xls 格式文件, Excel2007 文件格式 xlsx ,如果解析Excel,先分清Excel文件版本 ,如果2003之前, 使用HSSF API进行解析 、 如果 2007 Excel 使用 XSSF 进行解析

今天重点学习: HSSF 的 Excel解析 (针对Excel 2003 之前版本 )

下载 POI 3.9 的jar 包,完成Excel 读写操作

docs  POI使用文档 (javadoc文档、 规范文档)

学习API : 推荐 POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf

lib :相关jar包

ooxml-lib : 解析2007 Office版本文件jar 包

开发POI 最简单方式,导入 poi-3.9-20121203.jar 一个jar包就可以了

1.1.2.使用POI 读写Excel

参考: “POI整理.doc” 进行企业开发

编写代码,完成Excel解析和生成

解析步骤:

Excel文件 ---- HSSFWorkbook 工作薄对象 ---- Sheet --- Row 行--- Cell 单元格

解析时要注意,如果Excel单元格的数据,使用numeric 格式保存,不能使用 getStringCellValue 进行读取 , 使用 getNumericCellValue 进行读取

可以在Excel 设置单元格 数据保存格式 为文本类型,使用 getStringCellValue 进行读取

读取一个Excel文件

// 1、 获得 HSSFWorkbook (针对 xls格式文件 )
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream("info.xls"));
// 2、获得要解析sheet
HSSFSheet sheet = hssfWorkbook.getSheet("Sheet1"); // 通过名称获得Sheet
HSSFSheet sheet2 = hssfWorkbook.getSheetAt(0);// 获得第一个Sheet,通过下标获得
// 3、解析Sheet中每一行
for (Row row : sheet) {
// 遍历 sheet中每一行
// 4、 打印行 中单元格数据
for (Cell cell : row) {
// 判断单元格数据类型
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
System.out.println(cell.getStringCellValue());
} else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
System.out.println(cell.getNumericCellValue());
}
}
// 打印指定单元格的值
System.out.println(row.getCell(1).getStringCellValue());// 打印每行第二个单元格的内容
}

生成一个Excel文件 :

// 写Workbook 工作薄 --- 写Sheet --- 写Row 行 --- 写Cell 单元格
// 1、 创建 一个空的工作薄
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
// 2、 在工作薄建立 Sheet
HSSFSheet sheet = hssfWorkbook.createSheet("数据信息");
// 3、 向sheet写入行数据
HSSFRow row = sheet.createRow(0);// 创建第一行数据
// 4、 向row中单元格进行数据输出
row.createCell(0).setCellValue("产品");
row.createCell(1).setCellValue("价格");
// 5、 将Excel 数据输出到硬盘上
hssfWorkbook.write(new FileOutputStream("c:/test.xls"));

更多学习参考

点击下载

Java学习---Excel读写操作的更多相关文章

  1. java文件的读写操作

    java文件的读写操作主要是对输入流和输出流的操作,由于流的分类很多,所以概念很容易模糊,基于此,对于流的读写操作做一个小结. 1.根据数据的流向来分: 输出流:是用来写数据的,是由程序(内存)--- ...

  2. java 文件的读写操作

    java  文件的读写操作 一.读: public String getSetting() { HttpServletRequest request=org.apache.struts2.Servle ...

  3. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  4. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  5. JXL.jar简单封装Excel读写操作

    1.分析 一个excel文件能够有多页,每页excel中能够有多行,每行中能够有多列.用面向对象的思想能够把一行中的某列看作是一个String对象,一行看作是一个包括多个列的对象.一页是包括多行的对面 ...

  6. Java实现Excel的操作

    JAVA EXCEL API: 开源项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该API非Windows操作系统也可以通过纯Ja ...

  7. java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

    java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer. Mapped ...

  8. java 实现文件读写操作

    import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* JAVA IO 读写操作 20 ...

  9. Java的文件读写操作

    file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...

随机推荐

  1. Maven仓库汇总

    来源:http://tianya23.blog.51cto.com/1081650/386908 1.maven 仓库地址: 共有的仓库http://repo1.maven.org/maven2/ht ...

  2. django+mysql+html简单demo之 views+html

    #coding=utf-8 from __future__ import unicode_literals from django.shortcuts import render,render_to_ ...

  3. Python DataFrame导出CSV、数据库

    写入Oracle from sqlalchemy import create_engine import pandas as pd import numpy as np df = pd.DataFra ...

  4. 如何让自己的网站也能实现HTTPS访问 阿里云 转

    转 自  http://jingyan.baidu.com/article/90895e0fd9903164ec6b0bf7.html?qq-pf-to=pcqq.group 最近搞微信小程序,服务器 ...

  5. jquery选择器【总结】

    本文总结整理了jquery里和选择器相关的所有方法,通过这篇文章,可以让你学习到在jquery里使用选择器的所有方法. 一:基本选择器: $("#aijquery") 选择id值等 ...

  6. 【11】Redis .net 实例 StackExchange.Redis框架

    1.创建测试项目并下载nuget包:StackExchange.Redis PM> Install-Package StackExchange.Redis 2.创建 RedisHelper类 p ...

  7. C#中区别多态、重载、重写

    重写是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override. 格式: 基类中: public virtual void myMethod() { } 子 ...

  8. 利用QVOD架设流媒体服务器/电影服务器/vod服务器

    电影服务器一点也不稀罕,是的我们见的太多了,但是大家有没有想过自己也能架一个这样的服务器? 当然现在架一个电影服务器不切实际,去年吵的闹哄哄的“视听许可证”想必大家有所耳闻,再加上电影对服务器的要求一 ...

  9. HDU 2546(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 http://blog.csdn.net/xujinsmile/article/details/79694 ...

  10. Q:java中的泛型数组

     对于java,其是不支持直接创建泛型数组的.当采用如下的方式去创建一个泛型数组时,其会出现错误,编译无法通过的情况. package other.jdk1_5; /** * 该类用于演示泛型数组的创 ...