首页 > 技术文章 > POI操作Excel

wangxiayun 2018-07-10 19:04 原文

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

  结构:
    • HSSF - 提供读写Microsoft Excel格式档案的功能。
    • XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
    • HWPF - 提供读写Microsoft Word格式档案的功能。
    • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
    • HDGF - 提供读写Microsoft Visio格式档案的功能。

  使用必须引入依赖

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
</dependency>

 

1.写入Excel2003版本

 /**
     * 写入excel的方法, 07之前的版本,文件类型为.xls
     *   07及07之后的版本,文件类型为.xlsx
     * @throws Exception
     */
    public static void writeExcel03() throws Exception{
        /*
         *
         * 这是最基本的创建excel的方法,所有的值都给的固定值。
         *
         */
        //创建新excel文档,07版本之前均可以这么写
        HSSFWorkbook workbook = new HSSFWorkbook();
        //新建工作表
        HSSFSheet sheet = workbook.createSheet("test");
        //新建行
        HSSFRow row = sheet.createRow(0);
        //取第一行第一列
        HSSFCell cell = row.createCell(0);
        //给第一行第一列赋值
        cell.setCellValue("我是谁?");
        //将新建的工作表保存到硬盘中
        FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\admin\\Desktop\\aa.xls"));
        workbook.write(fos);
        fos.close();


    }

  

2.写入Excel2007版本

/*
     * 创建07及以后excel的写法
     *
     * */
    public static void writeExcel07() throws Exception{

        /*
         * 创建07之后的版本使用的工厂类为XSSFWorkbook
         *
         * */
        //创建新表格文件
        XSSFWorkbook workbook = new XSSFWorkbook();
        //创建新表单
        XSSFSheet sheet = workbook.createSheet("test07");
        //创建sheet表单中的行
        XSSFRow row = sheet.createRow(0);
        //选取行中对应的列
        XSSFCell cell = row.createCell(0);
        //给对应的列中赋值
        cell.setCellValue("test");
        //输出创建的文件,存储到硬盘中
        FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\admin\\Desktop\\test.xlsx"));
        //workbook的write方法调用,不能忘啊
        workbook.write(fos);
        fos.close();
    }

  

3.读取Excel03以及07版本

    /*
     * 在实际应用中,在读取文件的时候,我们不一定确定读取的excel的具体版本,所以,在输入和输出的语句需要添加判断来让其适应不同的版本
     *
     * */
    public static void readExcel03and07() throws Exception{
        //读取文件的路径
        String filepath = "C:\\Users\\admin\\Desktop\\07.xlsx";

        //判断文件的格式,
        if(filepath.matches("^.+\\.(?i)((xls)|(xlsx))$")){
            FileInputStream fis = new FileInputStream(filepath);
            boolean is03Excel = filepath.matches("^.+\\.(?i)((xls))$")?true:false; //判断是2003还是2007
            Workbook workbook = is03Excel ? new HSSFWorkbook(fis):new XSSFWorkbook(fis);
           // Workbook workbook = new XSSFWorkbook(fis);
            Sheet sheet = workbook.getSheetAt(0);
            Row row = sheet.getRow(0);

            Cell cell = row.getCell(0);
            System.out.println("第一行第一列的数据是:"+cell.getStringCellValue());


        }
    }

  

推荐阅读