日期:2014-05-16  浏览次数:20760 次

Apache POI示范:使用Java实现对Excel表格的操作

Apache POI简介

是Apache基金会推出的一个Java API库,专门实现对微软Office文档的操作,包括创建,删除,插入,读取,修改等功能,基本上包括了所有的对Office文档的操

作,POI是所有相关库的统称,其实有好几个分类,对常用的三种Office文档:Word,Excel,PPT,对应不同的API:Excel (SS=HSSF+XSSF) 、Word (HWPF+XWPF)、

PowerPoint (HSLF+XSLF)其中带X的,都是对Office2007之后的文档的操作库(比如Excel文件由 .xls变成了 .xlsx );

本文章中主要介绍如何使用POI 来实现对Excel文件(.xls文件)的操作,新建 xls文件,新建表单并且插入数据

http://poi.apache.org/spreadsheet/quick-guide.html

这个连接是官网的一个快速入门指导,其实对于懂英文的人来说,最好还是忽视本文章,直接看该链接吧,讲解的其实更清楚的 ╯﹏╰

=============================================

好了,现在我们开始代码的示范,开始代码前,要先导入POI的jar文件库,点击下面的连接,http://poi.apache.org/download.html#POI-3.8,可以下载到POI的所

有jar文件,解压,目录如下图所示:

==============================================================

创建Excel文档

1.可以把所有.jar文件和 ooxml-lib下的jar文件都提取出来,放到工程中,然后将该jar文件导入到工程的Build Path中作为库使用;

2.新建Excel文档:HSSF中,一个Excel文档就被叫做一个Workbook,用Workbook创建Excel文档的代码很简单:其实不管是 .xls (Excel '97(-2007) ),还是XSSF,虽

然 两者对应不同版本的Excel文档,但是其整个实现过程都一样,无非是创建 .xlsx时,就把名字替换成XSSF而已:

使用HSSF创建 .xls文件

Workbook wb = new HSSFWorkbook(); 
FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
wb.write(fileOut); 
fileOut.close();

使用XSSF创建 .xlsx文件

Workbook wb = new XSSFWorkbook(); 
FileOutputStream fileOut = new FileOutputStream("workbook.xlsx"); 
wb.write(fileOut); 
fileOut.close();

这样,就会创建一个名为 workbook的Excel文件,但是这个文件中什么都没有,也无法打开;

关于Excel文档,首先有几个概念说一下: sheet 指的是一个Excel文件中的一张表单;row,表单中的一行;cell,一行中的一格,这三个元素依次包含,而一个 Excel文件

中,又可以包括多个sheet;

3.下面是整个操作的代码,包括了创建一个表单,然后插入一行,再在一行中插入一格一格的数据:

public static void createExcel() throws IOException {
        Workbook wb = new HSSFWorkbook();
        // Workbook wb = new XSSFWorkbook();
        FileOutputStream fileOut = new FileOutputStream("workbook.xls");

        CreationHelper createHelper = wb.getCreationHelper();
        Sheet sheet = wb.createSheet("表单一");

        // 创建一行,并且该行的序号为0
        Row row = sheet.createRow((short) 0);
        // 在该航中新建一格,值设为1
        Cell cell = row.createCell(0);
        cell.setCellValue(1);

        row.createCell(1).setCellValue(1.2);
        row.createCell(2).