Apache POI读写Excel
Apache POI是Apache软件基金会的开放源码函式库,POIAPI给Java程序对Microsoft Office格式档案读和写的功能。
官方文档
相关类
类名 | 对应文件类型 |
---|---|
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的更多相关文章
- Apache POI 读写 Excel 文件
目录 写入 Excel 文件 读取 Excel 文件 遍历 Excel 文件 需要的 maven 依赖 完整代码 写入 Excel 文件 // 写入 Excel 文件 // ============= ...
- jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL
这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...
- 使用Apache POI导出Excel小结--导出XLS格式文档
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
- [转]POI读写Excel 修改
[转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...
- poi读写Excel
poi读写Excel 对于一个程序员来说,文件操作是经常遇到的,尤其是对Excel文件的操作. 在这里介绍一下我在项目中用到的一个操作Excel的工具——POI.关于POI的一些概念,网络上很多,详细 ...
- apache POI 导出excel相关方法
apache POI 操作excel无比强大.同时有操作word和ppt的接口. 下面讲解poi中常用方法. 1,设置列宽 HSSFSheet sheet = wb.getSheetAt(0); sh ...
- Java开发小技巧(六):使用Apache POI读取Excel
前言 在数据仓库中,ETL最基础的步骤就是从数据源抽取所需的数据,这里所说的数据源并非仅仅是指数据库,还包括excel.csv.xml等各种类型的数据接口文件,而这些文件中的数据不一定是结构化存储的, ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- 利用Apache POI操作Excel
最近在做接口,有个功能是利用Excel导入汽车发动机所需零件信息到线上系统中.简单回顾一下之前学过的用java操作Excel. 1.maven配置Apache POI pom.xml中配置POIjar ...
随机推荐
- python 实现多层列表拆分成单层列表
有个多层列表:[1, 2, 3, 4, [5, 6, [7, 8]], ['a', 'b', [2, 4]]],拆分成单层列表 使用内置方法 结果和原列表顺序不同 def split(li): pop ...
- paraview将csv格式显示为云图
paraview可以直接读入csv数据,并且显示为vtk的云图效果,和矢量图效果. 二维矢量图 导入csv数据(数据在文章最后有提供): 成功导入: 关闭右侧数据,并选择Filters->Alp ...
- vue项目中mockjs的使用
mock.js是一个库,源码托管:https://github.com/nuysoft/Mock github上的原话:Mock.js是一个模拟数据生成器,可帮助前端开发和原型与后端进度分开,并减少某 ...
- Percona Toolkit工具连接MySQL 8报错的解决方案
使用Percona Toolkit的工具连接MySQL 8.x数据库时,会遇到类似"failed: Plugin caching_sha2_password could not be loa ...
- 获取url中查询字符串参数
// 获取url中查询字符串参数 例如http://www.test.com?a=1&b=2 function RequestParamete() { var url = window.loc ...
- git 上传代码报错eslint --fix found some errors. Please fix them and try committing again.
在提交时用下面这句 git commit --no-verify -m "提交时的注释"
- 什么是SPI
一.什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制.它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加 ...
- (二)http请求方法和状态码
1.HTTP请求方法 根据 HTTP 标准,HTTP 请求可以使用多种请求方法. HTTP1.0 定义了三种请求方法: GET.POST 和 HEAD方法. HTTP1.1 新增了六种请求方法:OPT ...
- 2018-12-8 论文翻译+hdoj+git+python
今天干的事不多,明天得把实验写了. 论文翻译了摘要.0.5h hdoj 五道水题.注意while(cin>>char&&char != '\n')没用.可用ch = cin ...
- 使用IDEA完成一个SpringBoot的demo
打算开始做毕业设计了,写一些博客记录一下做毕业设计的过程. 前两天从老师那里拿了学长学姐做的非常简陋的代码,配置环境跑了一下,老师找我的时候说还剩下50%的工作,但感觉至少还有70%. 废话不多说,今 ...