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

官方文档

[https://poi.apache.org/]

相关类

类名 对应文件类型
HSSF 读写Microsoft Excel XLS
XSSF 读写Microsoft Excel OOXML XLSX
HWPF 读写Microsoft Word DOC97
XWPF 读写Microsoft Word DOC2003
XSLF 读写Microsoft PowerPoint
XDGF 读Microsoft Visio
XPBF 读Microsoft Publisher
XSMF 读Microsoft Outlook

XLSX相关类及方法

常用类

类名 对应关系
XSSFWorkbook 工作薄(可以理解为.xlsx的文件)
XSSFSheet Excel表(就是创建Excel文件时默认创建的Sheet1那种表格)
XSSFRow 表格中的一行数据
XSSFCell 表格一行中的一个单元格
XSSFCellStyle 单元格样式
XSSFFont 字体
XSSFHeader Sheet的页眉
XSSFFooter Sheet的页脚
DocumentSummaryInformation 文件摘要信息
CellRangeAddress 单元格范围地址,通常合并单元格时使用

常用方法

构造方法

方法名 说明
XSSFWorkbook()
XSSFWorkbook(InputStream is) (is为要读的文件的输入流)
XSSFWorkbook(File file) 按文件对象读取
XSSFWorkbook(String path) 按文件路径读取

XSSFWorkbook常用方法

方法名 返回类型 说明
getNumberOfSheets() int 获取工作薄中表的个数
getSheet(String name) XSSFSheet 按表名获取表
getSheetAt(int index) XSSFSheet 按表序号获取表
getSheetIndex(String name) int 获取指定表名的表序号
getSheetIndex(Sheet sheet) int 按表获取它的序号
removeSheetAt(int index) void 删除指定序号的表
write(OutputStream var1) void 将内存中的Excel写入到文件
createCellStyle() XSSFCellStyle 创建一个单元格格式

XSSFSheet常用方法

方法名 返回类型 说明
createRow(int rownum) HSSFRow 在指定行创建一个新行
getRow(int index) HSSFRow 获取一行数据
getFirstRowNum() int 获取从上到下第一行有数据的行所在行号
getLastRowNum() int 获取从下到上第一行有数据的行所在行号
addMergedRegion(CellRangeAddress region) int 合并单元格
autoSizeColumn(int column) void 自动调整指定列的宽度
setColumnWidth(int columnIndex, int width) void 设置某一列的宽度,width=字符个数 * 256,例如20个字符的宽度就是20 * 256

XSSFRow常用方法

方法名 返回类型 说明
createCell(int column) XSSFCell 创建一个单元格
createCell(int columnIndex, CellType type) XSSFCell 创建指定单元格格式的单元格
getCell(int cellnum) XSSFCell 获取指定行中指定索引的单元格
setHeight(short height) void 设置行高

XSSFCell常用方法

方法名 返回类型 说明
setCellValue(String value) void 设置单元格内容
setCellValue(double value) void 同上
setCellValue(Date value) void 同上
setCellValue(LocalDateTime value) void 同上
setCellValue(Calendar value) void 同上
toString() String 将单元格中的内容转换为String返回
setCellFormula(String formula) void 设置单元格计算公式
setCellStyle(CellStyle style) void 设置单元格格式

XSSFFont常用方法

方法名 返回类型 说明
setColor(short color) void 设置字体颜色
setBold(boolean bold) void 设置是否粗体
setItalic(boolean italic) void 设置倾斜
setUnderline(byte underline) void 设置下划线

XSSFCellStyle常用方法

方法名 返回类型 说明
setFont(Font font) void 为单元格设置字体样式
setAlignment(HorizontalAlignment align) void 设置水平对齐方式
setVerticalAlignment(VerticalAlignment align) void 设置垂直对齐方式
setFillForegroundColor(short bg) void 设置前景色
setFillBackgroundColor(short bg) void 设置背景颜色

示例

导包

将下载下来的包中所有的docs文件夹同目录下的所有jar包、lib文件夹、ooxml-lib文件夹导入到工程中

读入

样例表

用户编号 用户名 密码 姓名 性别 年龄
1 zs 123 张三 18
2 ls ls 李四 18
3 rsb rsb rsb 16
5 rbj rbj rbj 15
7 ssq ssq ssq 14
8 iow iow iow 7
9 auf auf auf 9
10 atv atv atv 12
11 soc soc soc 5
12 wqo wqo wqo 12
import org.apache.poi.xssf.usermodel.*;

import java.io.IOException;
import java.io.InputStream; public class Main {
public static void main(String[] args) throws IOException {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(is); //获取索引为0的sheet表格
XSSFSheet sheet = workbook.getSheetAt(0);
//获取表格中有内容的首行行号
int first = sheet.getFirstRowNum();
//获取表格中有内容的尾行行号
int last = sheet.getLastRowNum(); //从首行开始获取,首行为表头
XSSFRow row = sheet.getRow(0);
XSSFCell cell = row.getCell(0);
System.out.print(cell.toString() + "\t");
cell = row.getCell(1);
System.out.print(cell.toString() + "\t");
cell = row.getCell(2);
System.out.print(cell.toString() + "\t");
cell = row.getCell(3);
System.out.print(cell.toString() + "\t");
cell = row.getCell(4);
System.out.print(cell.toString() + "\t");
cell = row.getCell(5);
System.out.println(cell.toString() + "\t");
for (int i = first + 1|i <= last|++i) {
row = sheet.getRow(i);
cell = row.getCell(0);
int uid = Integer.valueOf(cell.toString().replace(".0", ""));
cell = row.getCell(1);
String uname = cell.toString();
cell = row.getCell(2);
String upass = cell.toString();
cell = row.getCell(3);
String truename = cell.toString();
cell = row.getCell(4);
String sex = cell.toString();
cell = row.getCell(5);
int age = Integer.valueOf(cell.toString().replace(".0", ""));
System.out.println(new User(uid, uname, upass, truename, sex, age));
}
}
}
用户编号	用户名	密码	姓名	性别	年龄
1 zs 123.0 张三 男 18
2 ls ls 李四 男 18
3 rsb rsb rsb 男 16
5 rbj rbj rbj 男 15
7 ssq ssq ssq 女 14
8 iow iow iow 男 7
9 auf auf auf 男 9
10 atv atv atv 男 12
11 soc soc soc 女 5
12 wqo wqo wqo 男 12

写出

import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*; import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Random; public class Write {
public static void main(String[] args) throws IOException {
//新建一个工作薄
XSSFWorkbook workbook = new XSSFWorkbook();
//在工作薄中新建一个名为写入的sheet表
XSSFSheet sheet = workbook.createSheet("写入");
//创建一行作为表头
XSSFRow row = sheet.createRow(0);
//向表头写入内容
XSSFCell cell = row.createCell(0);
cell.setCellValue("用户编号");
cell = row.createCell(1);
cell.setCellValue("用户名");
cell = row.createCell(2);
cell.setCellValue("密码");
cell = row.createCell(3);
cell.setCellValue("姓名");
cell = row.createCell(4);
cell.setCellValue("性别");
cell = row.createCell(5);
cell.setCellValue("年龄"); //写入其他内容同理 //测试合并单元格
row = sheet.createRow(1);
cell = row.createCell(0);
cell.setCellValue(1);
cell = row.createCell(1);
cell.setCellValue(2);
cell = row.createCell(2);
cell.setCellValue(3); sheet.addMergedRegion(new CellRangeAddress(1,1,0,3));
cell = row.getCell(0);
//让工作薄创建一个单元格格式
XSSFCellStyle style = workbook.createCellStyle();
//设置水平对齐方式
style.setAlignment(HorizontalAlignment.CENTER);
//设置垂直对齐方式
style.setVerticalAlignment(VerticalAlignment.CENTER);
cell.setCellStyle(style); workbook.write(new FileOutputStream("write.xlsx"));
}
}

Apache POI读写Excel的更多相关文章

  1. Apache POI 读写 Excel 文件

    目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...

  2. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...

  3. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  4. [转]POI读写Excel 修改

    [转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...

  5. poi读写Excel

    poi读写Excel 对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作. 在这里介绍一下我在项目中用到的一个操作Excel的工具——POI.关于POI的一些概念,网络上很多,详细 ...

  6. apache POI 导出excel相关方法

    apache POI 操作excel无比强大.同时有操作word和ppt的接口. 下面讲解poi中常用方法. 1,设置列宽 HSSFSheet sheet = wb.getSheetAt(0); sh ...

  7. Java开发小技巧(六):使用Apache POI读取Excel

    前言 在数据仓库中,ETL最基础的步骤就是从数据源抽取所需的数据,这里所说的数据源并非仅仅是指数据库,还包括excel.csv.xml等各种类型的数据接口文件,而这些文件中的数据不一定是结构化存储的, ...

  8. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  9. 利用Apache POI操作Excel

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

随机推荐

  1. VMware虚拟机中共享文件夹 开机启动

    输入命令: sudo /usr/bin/vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=02 ...

  2. rabbitmq 延时队列 插件方式实现 每条消息都延时自己时间

    上篇文章的延时是加到队列上的 通过死信过时推送 ,缺点就是不能每条消息定义自己的过时时间而且每次有新的过时时间,要新建一个交换机和队列 https://www.cnblogs.com/brady-wa ...

  3. centos8安装fastdfs6.06集群方式一之:软件下载与安装

    一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...

  4. docker-docker-compose 安装

    1.安装docker-compose(官网:https://github.com/docker/compose/releases) 安装: curl -L https://github.com/doc ...

  5. Flutter Webview添加Cookie的正确姿势

    场景 h5页面要从cookie里面取数据,所以需要在flutter webview的cookie里面塞一些数据,设置的数据多达十几条:按照网上查的使用方式来设置,通过fiddler抓包发现,只能生效一 ...

  6. Compareto方法

    很多时候我们写Compareto方法是用于排序,那么排序就涉及到数据位置交换. 所以要注意compareto返回值的含义,通过一个例子来看一下: 假设对象的num属性作为比较标准,对象为testVO ...

  7. 国内首个 .NET 5 框架 Fur 斩获 1000 stars,1.0.0-rc.final.20 发布

          Fur 是 .NET 5 平台下企业应用开发最佳实践框架. 通往牛逼的路上,风景差得让人只想说脏话,但我在意的是远方. 啥环境 早在 1998 年微软公司对外发布 .NET/C# 平台的那 ...

  8. [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构

    [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 目录 [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x0 ...

  9. 【应用服务 App Service】 App Service Rewrite 实例 - 反向代理转发功能

    问题描述 在使用Azure App Service(应用服务)时,有时候需要在不同的站点之间进行跳转,但是希望通过通过访问同一个域名的方式来实现反向代理.如果创建应用时候选择的是Window服务,这时 ...

  10. Mybatis---06Mybatis配置文件浅析(四)

    参考链接:深入理解Mybatis插件开发 1.plugins:与其称为Mybatis插件,不如叫Mybatis拦截器,更加符合其功能定位,实际上它就是一个拦截器,应用代理模式,在方法级别上进行拦截. ...