浅析POI操作Excel

一、POI是什么?是做什么用的?
       POI是Apache软件基金会研发的一套开源API,提供给java程序操作Microsoft Office格式文件的编程接口。程序员可以通过POI来对Excel表格等文件进行读和写的操作。
二、POI的简单操作实例
        首先要在工程中导入POI架包,例如:poi-3.7.jar
       (1)创建Excel表格,并向表格中写入数据。
                定义创建表格的静态方法,在测试方法中直接调用即可创建需要的表格,参数含义分别是:存放表格内容的二维数组、创建生成的表格在磁盘上的存放路径(包括文件名)、表名、行数、列数。

package com.briup.util;

import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class CreateExcel {

public static void getExcel(String[][] value,String file,String sheetname,int x,int y) throws Exception{
//创建Excel工作薄对象
HSSFWorkbook workbook = new HSSFWorkbook();
//设置字体
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle cellstyle = workbook.createCellStyle();
cellstyle.setFont(font);

//创建工作表
HSSFSheet sheet = workbook.createSheet(sheetname);
for(int i = 0;i<x;i++){
HSSFRow row = sheet.createRow(i);
for(int j = 0;j<y;j++){
HSSFCell cell = row.createCell(j);
if(i==0 || j==0)
cell.setCellStyle(cellstyle);
cell.setCellValue(value[i][j]);
}
}
//创建输出流将工作薄对象存到磁盘上
FileOutputStream fos = new FileOutputStream(file);
workbook.write(fos);
fos.flush();
System.out.println("文件正在生成...");
System.out.println("文件已生成!");
fos.close();
}
}

(2)从Excel表格中读取数据到java程序中
读取方法参数含义:要读取表Excel路径(包括文件名)、工作表名、读取的行数、读取的列数

package com.briup.util;

import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ReadExcel {
public static void getExcel(String file, String name,int x,int y) throws Exception {
// 创建对Excel工作薄文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = workbook.getSheet(name);
HSSFRow row = null;
HSSFCell cell = null;
for (int i = 0; i < x; i++) {
row = sheet.getRow(i);
for (int j = 0; j < y; j++) {
cell = row.getCell(j);
System.out.print(cell.getStringCellValue() + "\t");
}
System.out.println();
}
}
}

(3)测试类

public class Test {
public static void main(String[] args) {
String file = "E:/zhoushuo/student.xls";
String name = "高一(13)班学生信息";
String[][] value = {{"姓名","性别","年龄"},{"张三","男","17"},{"李四","女","16"},{"王五","男","16"},{"赵六","女","15"}};
int row = value.length;
int col = value[0].length;
try {
CreateExcel.getExcel(value,file, name, row, col);//调用静态方法根据二维数组的内容创建所需的表格
ReadExcel.getExcel(file, name, row, col);//打印表格内容到控制台
} catch (Exception e) {
e.printStackTrace();
}
}

}

三、个人感言
        通过POI,程序员可以将数据库中的表生成Excel表格存放在磁盘上,同理,也可以从现有Excel表格中获取需要的数据给程序,非常方便。
四、遇到的问题
        POI插入日期格式不能正确显示。 
五、结语
        本人初次接触POI,文章有错误或不当之处,还请指正! 

 

posted @ 2014-05-22 15:06  倚天剑雨  阅读(163)  评论(0)    收藏  举报