Apache POI简介

开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。

​ 官方主页: http://poi.apache.org/index.html

​ API文档: http://poi.apache.org/apidocs/index.html

创建一个put普通的maven项目

导入相关依赖坐标

<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi</artifactId>
 <version>3.14</version>
</dependency>
<dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>3.14</version>
</dependency>

常用的类(POI结构)

HSSF - 提供读写Microsoft Excel XLS格式档案的功能

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

HWPF - 提供读写Microsoft Word DOC格式档案的功能

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

HDGF - 提供读Microsoft Visio格式档案的功能

HPBF - 提供读Microsoft Publisher格式档案的功能

HSMF - 提供读Microsoft Outlook格式档案的功能

注意:使用wps的同学也可以使用poi

下面来写两个案例吧

1. 从Excel文件读取数据

POI操作Excel表格封装了几个核心对象:

XSSFWorkbook:工作簿

XSSFSheet:工作表

XSSFRow:行

XSSFCell:单元格

1:创建工作簿对象

 // 1.创建工作簿对象,并指定操作的文件
XSSFWorkbook workbook = new XSSFWorkbook("H:\\temp\\goodstype.xlsx");

2:获得工作表对象

 // 2.获取工作表对象,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
XSSFSheet sheetAt = workbook.getSheetAt(0);

3:遍历工作表对象 获得行对象

// 3.遍历工作表获得行对象
for (Row row : sheetAt) {
}



4:遍历行对象 获得单元格(列)对象

 // 4.遍历行对象获取单元格对象
for (Cell cell : row) {
// 获取单元格数据
String cellValue = cell.getStringCellValue();
System.out.println("cellValue = " + cellValue);
}

5:获得数据



注意:这里报了一个错,原因是我的第一列是数值类型,当我们以getStringCellValue获取时需要将该列改为文本类型



6:关闭

workbook.close();

还有一种方式获取数据

//创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook("H:\\temp\\goodstype.xlsx");
//获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
XSSFSheet sheet = workbook.getSheetAt(0);
//获取当前工作表最后一行的行号,行号从0开始
int lastRowNum = sheet.getLastRowNum();
for(int i=0;i<=lastRowNum;i++){
//根据行号获取行对象
XSSFRow row = sheet.getRow(i);
// 再获取单元格对象
short lastCellNum = row.getLastCellNum();
for(short j=0;j<lastCellNum;j++){
// 获取单元格对象的值
String value = row.getCell(j).getStringCellValue();
System.out.println(value);
}
}
workbook.close();

2.向Excel文件写入数据

package com.qbb.poi;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; /**
* @author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)
* @version 1.0
* @date 2022-03-17 10:37
* @Description:
*/
public class WriteExcel {
public static void main(String[] args) throws Exception { // 1.创建工作簿对象
XSSFWorkbook workbook = new XSSFWorkbook();
// 2.创建工作表对象
XSSFSheet sheet = workbook.createSheet("qiuqiu");
// 3.创建行对象,0表示第一行
XSSFRow row = sheet.createRow(0);
// 设置头部信息
row.createCell(0).setCellValue("ID");
row.createCell(1).setCellValue("姓名");
row.createCell(2).setCellValue("成绩");
// 4.创建列(单元格)对象, 设置内容
XSSFRow row1 = sheet.createRow(0);
row1.createCell(0).setCellValue("1");
row1.createCell(1).setCellValue("qiuqiu");
row1.createCell(2).setCellValue(100); XSSFRow row2 = sheet.createRow(0);
row2.createCell(0).setCellValue("2");
row2.createCell(1).setCellValue("ll");
row2.createCell(2).setCellValue("99");
// 5.通过输出流将workbook对象下载到磁盘
FileOutputStream outputStream = new FileOutputStream("H:\\temp\\score.xlsx");
workbook.write(outputStream);
// 刷新
outputStream.flush();
outputStream.close();
workbook.close();
}
}



注意:当我们打开了当前excel时,再去写将会报错,已被占用;关闭excel再运行就好了

感觉没有EasyExcel用的爽啊,有兴趣的小伙伴可以去了解阿里的EasyExcel

Apache POI 操作Excel简单入门使用的更多相关文章

  1. 利用Apache POI操作Excel

    最近在做接口,有个功能是利用Excel导入汽车发动机所需零件信息到线上系统中.简单回顾一下之前学过的用java操作Excel. 1.maven配置Apache POI pom.xml中配置POIjar ...

  2. 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)

    关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...

  3. 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?

    在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表.那么在这个章节里面,我将会给大家演示一下,如 ...

  4. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?

    有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...

  5. java使用Apache POI操作excel文件

    官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...

  6. apache POI 操作excel<导入导出>

    1.首先导入maven依赖 <!-- POI核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> ...

  7. Apache POI 操作Excel(1)--POI简介

    Apache POI(http://poi.apache.org/)是一个用于读取和编写Microsoft Office文件格式开源的Java项目,现在已经可以操作Excel,PowerPoint,W ...

  8. 如何用Apache POI操作Excel文件-----如何用Apache POI 画一个离散图

    有的时候,我们需要Excel中的数据,通过一个图画,可视化的表现出来. 那么这个时候,应该如何做呢?现在就借花献佛,以Apache POI自己提供的一个例子为例,给大家演示一下POI的API 如何画图 ...

  9. (6) 如何用Apache POI操作Excel文件-----POI-3.10的一个和注解(comment)相关的另外一个bug

    如果POI-3.10往一个工作表(sheet)里面插入数据的话,需要注意了,其有一个不太被容易发现的bug. 被插入的工作表(sheet)里面的单元格没有包含任何的注解(comment)的时候,插入一 ...

  10. 使用Apache POI操作Excel文件---在已有的Excel文件中插入一行新的数据

    package org.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

随机推荐

  1. 文心一言(ERNIE Bot)初体验

    引言 几个月前向百度提交了文心一言的体验申请,这两天收到了可以体验的通知,立马体验了一把.总体来说,文心一言基本上能做到有问必答,但是一些奇葩的问题还是会难住这位初出茅庐的 AI. 分享体验 我先后问 ...

  2. Python之os模块常用命令

    OS模块介绍 os模块是Python标准库中的一个用于访问操作系统相关功能的模块,os模块提供了一种可移植的使用 操作系统功能的方法.使用os模块中提供的接口,可以实现跨平台访问.该模块包含了大量的操 ...

  3. [译]2023年 Web Coponent 现状

    本文为翻译 原文地址:2023 State of Web Components: Today's standards and a glimpse into the future. 最近,我写了关于如何 ...

  4. 《Python魔法大冒险》010 魔法宝箱:列表与元组的探险

    城堡的大门 随着小鱼和魔法师的深入,他们来到了一个古老的废弃城堡.城堡的大门上挂着一个巨大的锁,而锁的旁边有一排小抽屉,每个抽屉里都有一个物品. 魔法师对小鱼说:"这是一个古老的魔法宝箱,小 ...

  5. 如何随心所欲调试HotSpot VM源代码?(改造为CMakeLists项目)

    常有小伙伴问我是怎么调试HotSpot VM源代码的,我之前通过视频和文章介绍过一种大家都用的调试方法,如下: 文章地址:第1.2篇-调试HotSpot VM源代码(配视频) 视频地址:https:/ ...

  6. LeetCode 周赛上分之旅 #49 再探内向基环树

    ️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问. 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越 ...

  7. css的认知与样式

      目录 1. 介绍css 2. CSS语法 3. CSS注释 4. CSS中的颜色值 5. CSS长度单位 6. html引入CSS的三种方法 6.1 行内样式(内联样式) 6.2   内嵌样式 6 ...

  8. GeoServer发布影像WMTS服务

    WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案. WMTS: 切片地图web服务(OpenGIS Web Map Tile Service) 使用GeoServer发布WMTS服 ...

  9. 解决 Steam 无法自动登录的问题

    前言 劳动节假期闲的没事,重装一下电脑,结果电脑的 Steam 不会自动登录了,每次重启电脑就要重新输入密码和令牌.查了一下居然是 Windows 凭据管理器默认不会自动启动的问题. 解决方法 打开计 ...

  10. vue框架,input相同标签如何定位-label定位

    一.问题提出: 后台前端框架改版,之前是angularjs,现在用vue,导致input标签定位失败,只能定位到第一个input标签,查看后台源代码发现这两个标签是一模一样,如下图: 二.问题思考过程 ...