引言

在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应用场景

  1. 数据报表生成
  2. 数据备份
  3. 数据批量上传

搭建环境

<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,来选择不同的实现类//创建表 sheetworkbook.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,来选择不同的实现类//创建表单 sheetSheet 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//创建表单 sheetSheet 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//创建表单 sheetSheet 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(一)相关推荐

  1. Apache POI和JXL(Java Excel)的基本使用——操作excel

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

  2. java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况

    首先需要导入包 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.NP ...

  3. java接口自动化Excel占位符_基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport的接口自动化测试框架...

    接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG ...

  4. java写入excel文件poi

    java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils;import java.io.File; import jav ...

  5. java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网

    Java操作Excel/Jakarta POI API/data/Jakarta POI API.doc Java操作Excel/Jakarta POI API/jar/poi-3.0.2-FINAL ...

  6. Java中使用poi导入、导出Excel

    Java中使用poi导入.导出Excel 学习了:http://www.cnblogs.com/Damon-Luo/p/5919656.html 转载于:https://www.cnblogs.com ...

  7. java excel 插入新行_使用POI往EXCEL中插入行

    部分代码如下(POI的版本为3.2) public void insertRow() throws IOException { POIFSFileSystem fs = new POIFSFileSy ...

  8. POI和Java Excel Api导入导出----详细到你不敢相信

    来自:http://blog.csdn.net/jerehedu/article/details/45195359 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要 ...

  9. Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 poi excel copy

    Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 一.前言 1.本文记录 poi excel 实现 单元格ce ...

  10. Java利用Apace POI读取Excel中数据

    Java利用Apace POI读取Excel中数据,解析数据 @Testpublic void readExcel() throws IOException{FileSystemView fsv = ...

最新文章

  1. ”该证书已被签发机构吊销“错误解决方案
  2. 【KVM系列文章】目录
  3. 这就是计算机男用英语怎么说,科学网—Is a computer male or female? 计算机是男的还是女的? - 邱敦莲的博文...
  4. 【python数据挖掘课程】二十三.时间序列金融数据预测及Pandas库详解
  5. 洛谷——P1012 拼数
  6. java项目功能详情介绍,JAVAEE—spring的详细介绍
  7. PHP笔记-连接MySQL数据库及查询数据
  8. python权限不够cmd安装不了_python环境配置+matplotlib
  9. Sharding-JDBC水平分表(分片策略)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记008
  10. 能够做到这10点,成功将离你不远
  11. 联想微型计算机a20,联想乐player A20
  12. ASC19 初赛要求自翻译
  13. Mysql-04-DQL-基础查询-条件查询-模糊查询-UNION和UNION ALL-排序-数量限制-分组查询-子查询
  14. 【更新ing】已有5个省份公布2020软考报名时间
  15. C++编译错误C2440“类型转换”: 无法从“void (__thiscall COpenGLWnd::* )(void)”转换为“DuiLib::DUI_PMSG解决办法
  16. HTTPS TSL/SSL详解
  17. 【毕业设计】图像检索算法(以图搜图)
  18. Maven中Scop为test时Eclispe中需要注意的地方
  19. 怎么提取视频中的音频?教你快速学会这三个方法
  20. ceisum 加载geojson,使用 Cesium 动态加载 GeoJSON 数据

热门文章

  1. html中如何让两个按钮并列显示(中间紧密连接在一起,不会出现空格)
  2. 操作系统的实现(1)
  3. TWAIN学习笔记003 TWAIN之用户图形界面
  4. 假期女友尽管在外花钱,我在家用python赚钱,随便花~~~
  5. Android_常用控件
  6. python编写掷骰子小游戏
  7. 向量的点乘和叉乘区别及几何意义
  8. Python数据分析案例-利用AB test分析转化率是否存在差异
  9. vscode无环境联调
  10. [办公软件word] 咪咕爱看怎么发送弹幕?咪咕爱看发送弹幕的方法