码迷,mamicode.com
首页 > Web开发 > 详细

Apache POI

时间:2020-05-02 23:04:16      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:time   阿里   版本   word   溢出   inf   href   set   大量   

Apache POI

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

操作Excel目前比较流行的就是Apache POI和阿里巴巴的easyExcel

使用场景

1.将用户信息导出为excel表格(导出数据)

2.将Excel表中的信息录入到网站数据库(上传)

基本功能

结构:

HSSF - 提供读写[Microsoft Excel](https://baike.baidu.com/item/Microsoft Excel)格式档案的功能。

XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

HWPF - 提供读写[Microsoft Word](https://baike.baidu.com/item/Microsoft Word)格式档案的功能。

HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

HDGF - 提供读写[Microsoft Visio](https://baike.baidu.com/item/Microsoft Visio)格式档案的功能。

导入依赖

 			<!-- 操作xls后缀的excel -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.0.1</version>
            </dependency>

            <!-- 操作xlsx后缀的excel -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.0.1</version>
            </dependency>

xls和xlsx的区别

xls最多65536条数据

xlsx可以存放无限条数据

Excel的结构

技术图片

1.工作簿 2.工作表 3.行 4.列

代码

package com.licha;

import org.apache.poi.ss.usermodel.Cell;
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.xssf.streaming.SXSSFWorkbook;

import java.io.FileOutputStream;

/**
 * User: Aurora
 * Date: 2020/5/2
 * Time: 16:22
 *	写入数据
 */
public class ExcelWriteTest {
    public static void main(String[] args) throws Exception {
        /**
         *  1.创建一个工作簿
         *  HSSFWorkbook 创建xls版本的
         *  SXSSFWorkbook  创建xlsx版本的
         *  XSSFWorkbook  可以写较大量的数据,但是速度慢,非常耗内存,会发生内存溢出
         */
        Workbook workbook = new SXSSFWorkbook();
        //2.创建一个工作表
        Sheet sheet = workbook.createSheet("员工表");
        //3.创建一行
        Row row1 = sheet.createRow(0);
        Row row2 = sheet.createRow(1);
        //4.创建一列
        Cell cell11 = row1.createCell(0);
        Cell cell12 = row1.createCell(1);
        Cell cell21 = row2.createCell(0);
        Cell cell22 = row2.createCell(1);

        cell11.setCellValue("姓名");
        cell12.setCellValue("张顺爬");
        cell21.setCellValue("年龄");
        cell22.setCellValue("22");

        //5.生成表
        String path = "D:\\javaObj\\POI-EasyExcel";
        FileOutputStream fileOutputStream = new FileOutputStream(path + "\\员工统计表.xlsx");
        workbook.write(fileOutputStream);
        fileOutputStream.close();
        System.out.println("excel生成完毕");

    }
}

package com.licha;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
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.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;

/**
 * User: Aurora
 * Date: 2020/5/2
 * Time: 21:29
 */
public class ExcelReadTest {
    public static void main(String[] args) throws Exception{
        String path = "D:\\javaObj\\POI-EasyExcel";
        //1.读取excel信息
        FileInputStream fileInputStream = new FileInputStream(path + "\\员工统计表.xlsx");
        Workbook workbook =  new XSSFWorkbook(fileInputStream);
        //2.读取表信息
        Sheet sheet = workbook.getSheet("员工表");
        //3.取得行信息
        Row row1 = sheet.getRow(0);
        //4.取得列信息
        Cell cell11 = row1.getCell(0);

        System.out.println(cell11.getStringCellValue());
        //取得当前行有多少列
        System.out.println(row1.getPhysicalNumberOfCells());
        //取得当前表有多少行
        System.out.println(sheet.getPhysicalNumberOfRows());
        //取得当前格的类型
        System.out.println(cell11.getCellType());
    }
}

Apache POI

标签:time   阿里   版本   word   溢出   inf   href   set   大量   

原文地址:https://www.cnblogs.com/licha233/p/12819934.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!