java中导入导出Excel文件

发布时间:2012-03-11 19:04:35   来源:文档文库   
字号:

java中导入导出Excel文件

一.POI简介

Jakarta POI apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API

目前比较成熟的是HSSF接口,处理MS Excel97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。

二.HSSF概况

HSSF sHorrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。 也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。

HSSF 为读取操作提供了两类APIusermodeleventusermodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。

三.开始编码

1 准备工作

要求:JDK 1.4+POI开发包

可以到 http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 最新的POI工具包

2 EXCEL 结构

HSSFWorkbook excel 文档对象介绍

HSSFSheet excel的表单

HSSFRow excel的行

HSSFCell excel的格子单元

HSSFFont excel字体

HSSFName 名称

HSSFDataFormat 日期格式

HSSFHeader sheet

HSSFFooter sheet

和这个样式

HSSFCellStyle cell样式

辅助操作包括

HSSFDateUtil 日期

HSSFPrintSetup 打印

HSSFErrorConstants 错误信息表

4 可参考文档

POI 主页:http://jakarta.apache.org/poi/

初学者如何快速上手使用POI HSSF

http://jakarta.apache.org/poi/hssf/quick-guide.html

代码例子

http://blog.java-cn.com/user1/6749/archives/2005/18347.html

里面有很多例子代码,可以很方便上手。

四.使用心得

POI HSSF usermodel包把Excel文件映射成我们熟悉的结构,诸如WorkbookSheetRowCell等,它把整个结构以一组对象的形式保存在内存之中,便于理解,操作方便,基本上能够满足我们的要求,所以说这个一个不错的选择。

1.创建工作簿 (WORKBOOK)

Java代码

package Excel2003;

import java.io.FileOutputStream;

import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.*;

/*

* To change this template, choose Tools | Templates and open the template in

* the editor.

*/

/**

* 本文档用来学习POI,即使用java导入导出excel表格,创建数据表

*

* @author single

*/

public class Excel2003_poi_creat {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

//Excel2003文档的创建,即扩展名为.xls

try {

//创建一个工作簿

Workbook wb = new HSSFWorkbook();

CreationHelper createHelper = wb.getCreationHelper();

//创建两个工作表,sheet1sheet2

Sheet sheet1 = wb.createSheet("sheet1");

Sheet sheet2 = wb.createSheet("sheet2");

// Excel工作表中插入一行数据

Row row = sheet1.createRow((short) 0);//此处数字为在第几行插入数据,0表示工作表第1行,1表示第2行,以此类推

// Create a cell and put a value in it.

//创建一个单元并把数据写入,0表示第N行第1个单元格,1表示第N行第2个单元格

Cell cell = row.createCell(0);//此处为单元序号

cell.setCellValue("'001");//此处为数据

// Or do it on one line.

//你也可以用一行代码来写入数据

row.createCell(1).setCellValue(1.2);//createCell(1)表示在第2个单元格写入,setCellValue(1.2)表示写入数据1.2

row.createCell(2).setCellValue(createHelper.createRichTextString("这就是我"));

row.createCell(3).setCellValue(true);

//创建文件

try (FileOutputStream fileOut = new FileOutputStream("e://workbook.xls")) {

wb.write(fileOut);

fileOut.close();

}

} catch (IOException e) {

}

}

}

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package Excel2003;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Iterator;

import java.util.logging.Level;

import java.util.logging.Logger;

import org.apache.poi.hssf.extractor.ExcelExtractor;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import org.apache.poi.ss.usermodel.*;

/**

*

* @author single

*/

public class Excel2003_poi_read {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

try {

//读取要导出的excel文件

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("e://test.xls"));

HSSFWorkbook wb = new HSSFWorkbook(fs);

ExcelExtractor extractor = new ExcelExtractor(wb);

extractor.setFormulasNotResults(false);

extractor.setIncludeSheetNames(false);

//工作表的序号

Sheet sheet1 = (Sheet) wb.getSheetAt(0);

//开始遍历整个工作表

//

/** for (Iterator it = sheet1.rowIterator(); it.hasNext();) {

Row row = (Row) it.next();

for (Iterator cit = row.cellIterator(); cit.hasNext();) {

//输出数据

if (cit.next().getCellType() == Cell.CELL_TYPE_FORMULA) {

Cell cell = cit.next();

FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();

//把公式行的数据计算出来

CellValue cellValue = evaluator.evaluate(cell);

System.out.println(cellValue.toString()+",");

}else{

System.out.print(cit.next().toString() + ",");

}

}

}**/

//

} catch (FileNotFoundException ex) {

Logger.getLogger(Excel2003_poi_read.class.getName()).log(Level.SEVERE, null, ex);

} catch (IOException ex) {

Logger.getLogger(Excel2003_poi_read.class.getName()).log(Level.SEVERE, null, ex);

}

}

}

本文来源:https://www.2haoxitong.net/k/doc/b611cbe29b89680203d82588.html

《java中导入导出Excel文件.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式