您的位置:首页 > 其它

使用POI操作excel(读取和创建)快速开发指南

2013-11-20 18:03 751 查看
POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

POI可以操作的文档格式有excel,word,powerpoint等,在此介绍POI操作excel的步骤,关于POI操作其他文档的步骤,大家可以参考其他资料。

首先需要去apache poi的官网上下载poi开发包。我这里使用的版本是3.9

需要引入的两个jar包为:

poi-3.9

poi-ooxml-3.9

代码如下
package com.soukenan.util.filter;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class POITest {
//使用POI创建excel工作簿
public static void createWorkBook() throws IOException {
//创建excel工作簿
Workbook wb = new HSSFWorkbook();
//创建第一个sheet(页),命名为 new sheet
Sheet sheet = wb.createSheet("new sheet");
//Row 行
//Cell 方格
// Row 和 Cell 都是从0开始计数的

// 创建一行,在页sheet上
Row row = sheet.createRow((short) 0);
// 在row行上创建一个方格
Cell cell = row.createCell(0);
//设置方格的显示
cell.setCellValue(1);

// Or do it on one line.
row.createCell(1).setCellValue(1.2);
row.createCell(2).setCellValue("This is a string 速度反馈链接");
row.createCell(3).setCellValue(true);

//创建一个文件 命名为workbook.xls
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
// 把上面创建的工作簿输出到文件中
wb.write(fileOut);
//关闭输出流
fileOut.close();
}

//使用POI读入excel工作簿文件
public static void readWorkBook() throws Exception {
// poi读取excel
//创建要读入的文件的输入流
InputStream inp = new FileInputStream("workbook.xls");

//根据上述创建的输入流 创建工作簿对象
Workbook wb = WorkbookFactory.create(inp);
//得到第一页 sheet
//页Sheet是从0开始索引的
Sheet sheet = wb.getSheetAt(0);
//利用foreach循环 遍历sheet中的所有行
for (Row row : sheet) {
//遍历row中的所有方格
for (Cell cell : row) {
//输出方格中的内容,以空格间隔
System.out.print(cell.toString() + "  ");
}
//每一个行输出之后换行
System.out.println();
}
//关闭输入流
inp.close();
}

public static void main(String[] args) throws Exception {
// POITest.createWorkBook();
POITest.readWorkBook();
}
}


补充问题:

请问poi cell.getcelltype=0是数字,poi cell.getcelltype=1是string,poi cell.getcelltype=2是时间吗?

CellType 类型 值
CELL_TYPE_NUMERIC 数值型 0
CELL_TYPE_STRING 字符串型 1
CELL_TYPE_FORMULA 公式型 2
CELL_TYPE_BLANK 空值 3
CELL_TYPE_BOOLEAN 布尔型 4
CELL_TYPE_ERROR 错误 5


追问
那时间什么的,1/2/2013是不是属于公式型啊 ,还请问一下,还有11.64%返回是几


回答
日期可以直接按字符串处理,如果这个日期需要和其它cell进行互动,那就要使用公式型。
11.64%也是字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: