poi操作Excel

一、POI简介


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

HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。

HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

二、POI结构说明

包名称说明

1、 HSSF提供读写Microsoft Excel XLS格式档案的功能。 XSSF提供读写Microsoft Excel OOXML
2、XLSX格式档案的功能。 HWPF提供读写Microsoft Word DOC格式档案的功能。 HSLF提供读写Microsoft
3、PowerPoint格式档案的功能。 HDGF提供读Microsoft Visio格式档案的功能。 HPBF提供读Microsoft
4、Publisher格式档案的功能。 HSMF提供读Microsoft Outlook格式档案的功能。

三、POI常用类说明

类名说明
HSSFWorkbookExcel的文档对象
HSSFSheetExcel的表单
HSSFRowExcel的行
HSSFCellExcel的格子单元
HSSFFontExcel字体
HSSFDataFormat格子单元的日期格式
HSSFHeaderExcel文档Sheet的页眉
HSSFFooterExcel文档Sheet的页脚
HSSFCellStyle格子单元样式
HSSFDateUtil日期
HSSFPrintSetup打印
HSSFErrorConstants错误信息表

四、Excel的基本操作

得到Excel常用对象
//获得Excel对象
    @Test
    public void testExcel1(){
        try {
            //获取系统文档
            POIFSFileSystem fspoi=new POIFSFileSystem(new FileInputStream("/Users/wangjun/temp/demo1.xls"));
            //创建工作薄对象
            HSSFWorkbook workbook=new HSSFWorkbook(fspoi);
            //创建工作表对象
            HSSFSheet sheet=workbook.getSheet("sheet1");
            //得到Excel表格
            HSSFRow row = sheet.getRow(1);
            //得到Excel工作表指定行的单元格
            HSSFCell cell = row.getCell(1);
            System.out.println(cell);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

03 创建Excel文档(最多只能处理65536行,否则会抛出异常)

 @Test
    public void To03() throws IOException {
//        创建Excel工作表
        Workbook workbook = new HSSFWorkbook ();
//        创建 明为 琻喜 的工作表
        Sheet sheet = workbook.createSheet ("琻喜");
//        创建 row 第一行
        Row row = sheet.createRow (0);
//        创建第1格
        Cell cell1 = row.createCell (0);
        cell1.setCellValue ("姓名");
//        创建第2格
        Cell cell2 = row.createCell (1);
        cell2.setCellValue ("性别");

        //        创建 row 第二行
        Row row2 = sheet.createRow (1);
//        创建第一格
        Cell cell21 = row2.createCell (0);
        cell21.setCellValue ("jx");
//        创建第2格
        Cell cell22 = row2.createCell (1);
        cell22.setCellValue (19);
//        新建文件流
        FileOutputStream fileOutputStream = new FileOutputStream (path + "琻喜03.xls");
//把相应的Exce1工作簿存盘
        workbook.write (fileOutputStream);
        fileOutputStream.close ();

    }

07 创建Excel文档(没有行数限制)

  	@Test
    public void To07() throws IOException {
//        创建Excel工作表
        Workbook workbook = new XSSFWorkbook ();
//        创建 明为 琻喜 的工作表
        Sheet sheet = workbook.createSheet ("琻喜");
//        创建 row 第一行
        Row row = sheet.createRow (0);
//        创建第1格
        Cell cell1 = row.createCell (0);
        cell1.setCellValue ("姓名");
//        创建第2格
        Cell cell2 = row.createCell (1);
        cell2.setCellValue ("性别");

        //        创建 row 第二行
        Row row2 = sheet.createRow (1);
//        创建第一格
        Cell cell21 = row2.createCell (0);
        cell21.setCellValue ("jx");
//        创建第2格
        Cell cell22 = row2.createCell (1);
        cell22.setCellValue (19);
        Cell cell23 = row2.createCell (2);
        cell23.setCellValue (new DateTime ().toString ("yyyy-MM-dd HH:mm:ss"));
//        新建文件流
        FileOutputStream fileOutputStream = new FileOutputStream (path + "琻喜07.xlsx");
//把相应的Exce1工作簿存盘
        workbook.write (fileOutputStream);
        fileOutputStream.close ();

    }

大文件写SXSSF

1、优点:可以写非常大的数据量,如100万条甚至更多条,写数据速度快,占用更少的内存
2、注意:
过程中会产生临时文件,需要清理临时文件默认由100条记录被保存在内存中,如果超过这数量,则最前面的数据被写入临时文件
如果想自定义内存中数据的数量,可以使用new SXSSFWorkbook ( 数量 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cookie3_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值