Apache POI 使用详细介绍

一、POI 结构与常用类

1. POI 是什么

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能

2. POI 结构

HSSF	提供读写Microsoft Excel XLS格式档案的功能。 
XSSF	提供读写Microsoft Excel OOXMLXLSX格式档案的功能。 
HWPF    提供读写Microsoft Word DOC格式档案的功能。 
HSLF	提供读写Microsoft PowerPoint格式档案的功能。  
HDGF	提供读Microsoft Visio格式档案的功能
HPBF	提供读Microsoft Publisher格式档案的功能。 
HSMF	提供读Microsoft Outlook格式档案的功能。

二、代码示例

以下为百度百科代码示例

示例一

利用POI API 创建Excel 文档

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileOutputStream;
public class CreateXL {
 /** Excel 文件要存放的位置,假定在D盘下*/
 public static String outputFile="D:\\test.xls";
 public static void main(String argv[]){
  try{
  // 创建新的Excel 工作簿
  HSSFWorkbook workbook = new HSSFWorkbook();
  // 在Excel工作簿中建一工作表,其名为缺省值
  // 如要新建一名为"效益指标"的工作表,其语句为:
  // HSSFSheet sheet = workbook.createSheet("sheet1");
  HSSFSheet sheet = workbook.createSheet();
  // 在索引0的位置创建行(第一行)
  HSSFRow row = sheet.createRow((short)0);
  //在索引0的位置创建单元格(第一列)
  HSSFCell cell = row.createCell((short) 0);
  // 定义单元格为字符串类型(Excel-设置单元格格式-数字-文本;不设置默认为“常规”,也可以设置成其他的,具体设置参考相关文档)
  cell.setCellType(HSSFCell.CELL_TYPE_STRING);
  // 在单元格中输入一些内容
  cell.setCellValue("你要输入的内容");
  // 新建一输出文件流
  FileOutputStream fOut = new FileOutputStream(outputFile);
  // 把相应的Excel 工作簿存盘
  workbook.write(fOut);
  fOut.flush();
  // 操作结束,关闭文件
  fOut.close();
  System.out.println("文件生成");
  }catch(Exception e) {
  System.out.println("已运行 xlCreate() : " + e );
  }
 }
}

示例二

将演示如何读取Excel文档中的数据,
假定在D盘JTest目录下有一个文件名为gongye.xls的Excel文件

 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import java.io.FileInputStream;
  
 public class ReadXL {
  /** Excel文件的存放位置。注意是正斜线*/
  public static String fileToBeRead="D:\\test1.xls";
   
  public static void main(String argv[]){ 
   try{
    // 创建对Excel工作簿文件的引用
    HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
    // 创建对工作表的引用。
    // 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
    HSSFSheet sheet = workbook.getSheet("Sheet1");
    // 也可用getSheetAt(int index)按索引引用,
    // 在Excel文档中,第一张工作表的缺省索引是0,
    // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
    // 读取左上端单元
    HSSFRow row = sheet.getRow(0);
    HSSFCell cell = row.getCell((short)0);
    // 输出单元内容,cell.getStringCellValue()就是取所在单元的值
    System.out.println("左上端单元是: " + cell.getStringCellValue()); 
   }catch(Exception e) {
    System.out.println("已运行xlRead() : " + e );
   }
  }
 }

设置单元格格式

1、创建字体,设置其为红色、粗体:

HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

2、创建格式

HSSFCellStyle cellStyle= workbook.createCellStyle();
cellStyle.setFont(font);

3、应用格式

HSSFCell cell = row.createCell((short) 0);
cell.setCellStyle(cellStyle);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("标题 ");
上一篇:c#-受限AppDomain中的代码访问安全性异常


下一篇:java web实现excel模版下载功能(1)