java--Excel操作工具——POI
Posted 雾晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java--Excel操作工具——POI相关的知识,希望对你有一定的参考价值。
引言
在web应用开发中,Excel报表是一种最常见的报表需求。Excel报表开发一般分为两种形式: 为了方便操作,基于Excel的报表批量上传数据 通过java代码生成Excel报表
Java中常见的用来操作Excl的方式一般有2种:JXL和POI。
JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护。
POI是apache的项目,可对微软的Word,Excel,Ppt进行操作,包括office2003和2007,Excl2003和2007。poi现在 一直有更新。所以现在主流使用POI。
Apache POI是Apache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache POI提供API 给Java语言操作Microsoft Office的功能。
POl应用场景
- 数据报表生成
- 数据备份
- 数据批量上传
搭建环境
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
结构说明
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格式档案的功能。
创建Excel
1、创建工作簿和表
public class PoiTest01 {
public static void main(String[] args) throws IOException {
//1、创建工作簿
Workbook workbook=new XSSFWorkbook(); //XSSF --2003
// 这个Workbook接口有很多个实现,我们根据要创建不同版本的excel,来选择不同的实现类
//创建表 sheet
workbook.createSheet("test");
//文件流
FileOutputStream pis=new FileOutputStream("F:\\\\Spring全家桶\\\\中间件\\\\POL操作excel\\\\zx\\\\src\\\\main\\\\resources\\\\excel\\\\text.xlsx");
//写入文件
workbook.write(pis);
pis.close();
}
}
效果
2、向单元格中写入一个字符串
public class PoiTest01 {
public static void main(String[] args) throws IOException {
//1、创建工作簿
Workbook workbook=new XSSFWorkbook(); //XSSF --2003
// 这个Workbook接口有很多个实现,我们根据要创建不同版本的excel,来选择不同的实现类
//创建表单 sheet
Sheet sheet=workbook.createSheet("test");
//创建 行对象 参数 索引 从0开始
Row row=sheet.createRow(2);
//创建单元格对象也是从0开始
Cell cell=row.createCell(2);
//向单元格写入数据
cell.setCellValue("摘星带妹稳赢");
//文件流
FileOutputStream pis=new FileOutputStream("F:\\\\Spring全家桶\\\\中间件\\\\POL操作excel\\\\zx\\\\src\\\\main\\\\resources\\\\excel\\\\text.xlsx");
//写入文件
workbook.write(pis);
pis.close();
}
}
预览效果图
3、设置单元格样式
/**
* 单元格样式处理
*/
public class PoiTest02 {
public static void main(String[] args) throws IOException {
//1、创建工作簿
Workbook workbook=new XSSFWorkbook(); //XSSF --2003
//创建表单 sheet
Sheet sheet=workbook.createSheet("test");
//创建 行对象 参数 索引 从0开始
Row row=sheet.createRow(2);
//创建单元格对象也是从0开始
Cell cell=row.createCell(2);
//向单元格写入数据
cell.setCellValue("摘星带妹稳赢");
//创建样式对象
CellStyle style=workbook.createCellStyle();
style.setBorderTop(BorderStyle.THIN); //设置上边框
style.setBorderBottom(BorderStyle.THIN);//设置下边框
//创建字体对象
Font font=workbook.createFont();
font.setFontName("华文行楷"); //设置字体
font.setFontHeightInPoints((short) 28); //设置字号
//放入样式对象里面
style.setFont(font);
//行高和列宽
row.setHeightInPoints(50); //行高
sheet.setColumnWidth(2,31*256); //列宽 在这里其实是指字符宽度
// 设置居中显示
style.setAlignment(HorizontalAlignment.CENTER); //水平居中
//添加样式到单元格
cell.setCellStyle(style);
//文件流
FileOutputStream pis=new FileOutputStream("F:\\\\Spring全家桶\\\\中间件\\\\POL操作excel\\\\zx\\\\src\\\\main\\\\resources\\\\excel\\\\text2.xlsx");
//写入文件
workbook.write(pis);
pis.close();
}
}
4、向excel添加一个图片
public static void main(String[] args) throws IOException {
//1、创建工作簿
Workbook workbook=new XSSFWorkbook(); //XSSF --2003
//创建表单 sheet
Sheet sheet=workbook.createSheet("test");
//创建 行对象 参数 索引 从0开始
Row row=sheet.createRow(2);
//创建单元格对象也是从0开始
Cell cell=row.createCell(2);
//向单元格写入数据
cell.setCellValue("摘星带妹稳赢");
//读取图片流
FileInputStream stream=new FileInputStream("F:\\\\Spring全家桶\\\\中间件\\\\POL操作excel\\\\zx\\\\src\\\\main\\\\resources\\\\1.jpg");
//将图片转换为二进制数组
byte[] bytes=IOUtils.toByteArray(stream);
stream.read(bytes);
//向Poi内存中添加一张图片 返回图片在图片集合中的索引
int index=workbook.addPicture(bytes,Workbook.PICTURE_TYPE_JPEG);
//绘制图片工具类
CreationHelper creationHelper = workbook.getCreationHelper();
//通过图片工具类 创建一个绘图对象
Drawing<?> drawingPatriarch = sheet.createDrawingPatriarch();
//创建锚点,设置图片坐标
ClientAnchor anchor = creationHelper.createClientAnchor();
anchor.setRow1(0);
anchor.setCol1(0);
//绘制图片
Picture picture=drawingPatriarch.createPicture(anchor,index); //图片位置 图片索引
picture.resize(); //自适应渲染图片
//文件流
FileOutputStream pis=new FileOutputStream("F:\\\\Spring全家桶\\\\中间件\\\\POL操作excel\\\\zx\\\\src\\\\main\\\\resources\\\\excel\\\\text3.xlsx");
//写入文件
workbook.write(pis);
pis.close();
}
效果图预览
上面的内容都是创建excel的部分,下一步我会出解析excel文档的教程,好吧,再见
以上是关于java--Excel操作工具——POI的主要内容,如果未能解决你的问题,请参考以下文章