POI Excel

来源:互联网 发布:淘宝怎样追加二次评论 编辑:程序博客网 时间:2024/06/15 06:00

1. Excel

POI提供了对Excel文件的读写,HSSF和XSSF提供创建,修改,读取和写入电子表格的方式

HSSF  - 读写Excel '97(-2007)(.xls)文件格式XSSF  - 读写Excel 2007 OOXML(.xlsx)文件格式SXSSF - XSSF的API兼容流扩展,用于生成大型电子表格,堆空间有限,实现低内存占用

这里写图片描述

org.apache.poi.ss.SpreadsheetVersion

这里写图片描述

2. HSSF用户模式类图

以HSSF为例
这里写图片描述

3. 工作簿Workbook

Workbook是创建或维护Excel工作簿的所有类的超接口。它属于org.apache.poi.ss.usermodel包

  1. HSSFWorkbook - 读写.xls格式的Excel
  2. XSSFWorkbook - 读写.xlsx格式的Excel
    这里写图片描述

4. 工作表Sheet

工作表Sheet是工作簿Workbook的中心结构,一个工作簿最少 有一个工作表Sheet

  1. HSSFSheet - Excel 2003及以下版本
  2. XSSFSheet - Excel 2007及以上版本
    这里写图片描述

3. 工作簿类结构

以HSSFWorkbook为例:
这里写图片描述

4. 合法sheet名

工作表Sheet名是有限制条件的:

 5. Sheet名不能超过31个字符  6. 不得包含任何以下任何字符:     - 0x0000        - 0x0003     - 冒号(:)         - 反斜杠(\)        - 星号(*)         - 问号(?)         - 正斜杠(/)        - 方括号([])

POI提供了创建合法Sheet名的方法:

org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(final String nameProposal)

5. 创建Sheet步骤

 1. 创建输出流OutputStream  2. 创建工作簿Workbook  3. 创建工作表Sheet  4. 创建行Row  5. 创建单元格Cell  6. 设置单元格值 7. 工作簿写入输出流  8. 关闭输出流

这里写图片描述

6. 创建Sheet实例

package hssf.sheet.sheet;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFRichTextString;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.RichTextString;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.util.WorkbookUtil;import util.ExcelUtil;public class ExportSheet {    public static void main(String[] args) throws Exception {        File file = new File("C:\\Users\\Administrator\\Desktop\\test.xls");        if (file.exists()) {            file.delete();        }        BufferedOutputStream out = null;        try {            out = new BufferedOutputStream(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test.xls"));            exportExcel(out);        } finally {            out.close();        }    }    private static void exportExcel(BufferedOutputStream out) throws Exception {        // Step 1 : 创建工作簿Workbook        Workbook workbook = new HSSFWorkbook();//      Workbook workbook = new XSSFWorkbook();        String safeSheetName = WorkbookUtil.createSafeSheetName("合法工作表");        // Step 2 : 创建工作表Sheet        Sheet sheet = workbook.createSheet(safeSheetName);        // 设置列宽        setColWidth (sheet);        Row row = null;        Cell cell = null;        for (int rowIndex = 0; rowIndex < 10; rowIndex++) {            // Step 3 : 创建行Row            row = sheet.createRow(rowIndex);            row.setHeightInPoints(30);            for (short colIndex = 0; colIndex < 10; colIndex++) {                // Step 4 : 创建单元格Cell                cell = row.createCell(colIndex);                RichTextString text = new HSSFRichTextString(ExcelUtil.convertNum2CellId(rowIndex, colIndex));                // Step 5 : 设置单元格内容                cell.setCellValue(text);            }        }        workbook.write(out);    }    /**     * 设置列宽     * */    private static void setColWidth(Sheet sheet) {        // 默认行高列宽        sheet.setDefaultRowHeight((short)(20*20));        sheet.setDefaultColumnWidth(4);        for (int colIndex = 0; colIndex < 10; colIndex++) {            sheet.setColumnWidth(colIndex, 12*256);        }    }}

这里写图片描述

7. 其他实例

http://www.cnblogs.com/LiZhiW/p/4313789.html