zoukankan      html  css  js  c++  java
  • JAVA的POI操作Excel

    1.1Excel简介

    一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组成,列用大写英文字母表示,从A开始到Z共26列,然后再从AA到AZ又26列,再从BA到BZ再26列以此类推。行则使用数字表示,例如;A3 表示第三行第一列,E5表示第五行第五列。

    1.2 POI工具包

    JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel。而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel。

    POI全称 Poor Obfuscation Implementation,直译为“可怜的模糊实现”,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能。官网:http://poi.apache.org ,POI支持office的所有版本,所以选择POI来讲解。

    1.3 POI Hello World

    在POI包中有如下几个主要对象和excel的几个对象对应:

    HSSFWorkbook

    Excel 工作簿workbook

    HSSFSheet

    Excel 工作表 sheet

    HSSFRow

    Excel 行

    HSSFCell

    Excel 单元格

    利用以上几个对象,我们简单创建一个Excel工作表,往里面的C1单元格写入和读出“Hello World”:

            //创建工作簿
            HSSFWorkbook workbook=new HSSFWorkbook();
            //新建工作表
            HSSFSheet sheet=workbook.createSheet("刘洋");
            //创建行,行号作为参数,第一行从0开始计算
            HSSFRow row=sheet.createRow(0);
            //创建单元格,row已经确定行号,列好作为参数,第一列从0开始计算
            HSSFCell cell=row.createCell(2);
            //设置单元格(第一行第三列)
            cell.setCellValue("hello word");
            
            FileOutputStream outputStream=new FileOutputStream("d:\工作簿.xls");
            
            workbook.write(outputStream);
            
            outputStream.close();

    再利用上述几个对象将“Hello World”读取出来:

            //读取excel文件
            FileInputStream inputStream=new FileInputStream("d:\工作簿.xls");
            //将输入流转换为workbook
            HSSFWorkbook workbook=new HSSFWorkbook(inputStream);
            //获取工作表
            HSSFSheet sheet=workbook.getSheetAt(0);
            //获取行
            HSSFRow row=sheet.getRow(0);
            //获取单元格(第一行第三列)
            HSSFCell cell=row.getCell(2);
            
            System.out.println("单元格内容为:"+cell.getStringCellValue());

    1.4  POI与Excel

    通过上门的例子我们知道如下信息:

    1、  Excel 的工作簿对应POI的HSSFWorkbook对象;

    2、  Excel 的工作表对应POI的HSSFSheet对象;

    3、  Excel 的行对应POI的HSSFRow对象;

    4、  Excel 的单元格对应POI的HSSFCell对象。

     

     

    POI 也能对07以后的excel版本进行读写,读写方法和读写03版是一样的,只是对象名称变了;原来各对象的开头字母H变为X,操作方式不变。

    1、 Excel 的工作簿对应POI的XSSFWorkbook对象;

    2、 Excel 的工作表对应POI的XSSFSheet对象;

    3、 Excel 的行对应POI的XSSFRow对象;

    4、 Excel 的单元格对应POI的XSSFCell对象。

    文件后缀为.xlsx

     

    查看POI api文档,我们可以查询POI中所有这些对象的属性和方法。

    从api文档中我们了解到:

    HSSFWorkbook 和 XSSFWorkbook 都实现了Workbook接口;

    HSSFSheet 和 XSSFSheet 实现了Sheet接口;

    HSSFRow 和 XSSFRow 实现了Row接口;

    HSSFCell 和 XSSFCell 实现了Cell接口;

    因为这两类处理对象共同实现了对应的同一接口,届时将大大方便和简化了同时处理不同格式的excel文件的编码工作。如;在处理03和07版本的excel文件时利用统一的接口就可以做到分析两个版本的excel数据。

    POI同时读入03和07版本的excel。

    方法一:判断文件的名称后调用对应版本的读入方法。

    方法二:根据不同版本用Workbook接口来读入文件并统一处理。

  • 相关阅读:
    [NoiPlus2016]天天爱跑步
    POJ3539 Elevator
    CodeForces 37E Trial for Chief
    CodeForces 986C AND Graph
    [tyvj-2054][Nescafé29]四叶草魔杖 费用流
    [CodeForces]986A Fair
    [CodeForces]981C Useful Decomposition
    分配问题
    圆桌问题
    数字梯形问题
  • 原文地址:https://www.cnblogs.com/intsmaze/p/5316838.html
Copyright © 2011-2022 走看看