说 明:

  • 由于poi的功能多样,可以生成ppt、word、excel.......,本文就以生成excel为例进行说明,相信聪明的你一定能举一反三
  • 使用的版本4.0.1
  • maven依赖

      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.1</version>
     </dependency>

  •    poi组件说明
Apache 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格式档案
  • 生成一个excel文档demo

代码

public static void hssfDemo1() throws Exception{

        //1.创建一个文档对象HSSFWorkbook (一个excel文档就对应一个HSSFWorkbook实例), 有两种创建方式
//方式一
HSSFWorkbook wb = new HSSFWorkbook();
//方式二
// HSSFWorkbook wb = HSSFWorkbookFactory.createWorkbook(); //2.我们都知道excel文档里面对应了sheet(可以有多个sheet),所以第二个步骤就是生成sheet对象
HSSFSheet sheet1 = wb.createSheet("sheet1"); //"sheet1"未对应的sheet的名称 //3.sheet里面的内容都是一行一行的格子组成,所以需要创建“行对象”
HSSFRow row0 = sheet1.createRow(0); //创建第一行,"0"为行号的下标 //4.生成列
HSSFCell cell0 = row0.createCell(0); //生成第一行的第一列
HSSFCell cell1 = row0.createCell(1); //生成第一行的第二列
HSSFCell cell2 = row0.createCell(2); //生成第一行的第三列
HSSFCell cell3 = row0.createCell(3); //生成第一行的第四列 //5.给列进行赋值
cell0.setCellValue("姓名");
cell1.setCellValue("年龄");
cell2.setCellValue("地址");
cell3.setCellValue("电话"); //6.输出excel文件
FileOutputStream fileOut = new FileOutputStream("C:/workbook.xls");
wb.write(fileOut);
}

生成文件结果

  • 相信聪明的你看了上面的demo,对生成excel有了一个感性的认识,下面来生成一个有点样子的excel文档(合并单元格、设置样式、设置字体。。。。。。)
public static void hssfDemo2() throws Exception{

        //创建文档对象HSSFWorkbook
HSSFWorkbook wb = HSSFWorkbookFactory.createWorkbook(); //创建sheet
HSSFSheet sheet1 = wb.createSheet("我是sheet1");
HSSFSheet sheet2 = wb.createSheet("我是sheet2"); //由于此方式创建行和列需要很大的代码量,我们可以采用循环的方式进行构建
/*
//创建sheet1里面的行
HSSFRow row0 = sheet1.createRow(0); // 创建第一行,"0"为行号的下标
HSSFRow row1 = sheet1.createRow(1); // 创建第一行,"0"为行号的下标
HSSFRow row2 = sheet1.createRow(2); // 创建第一行,"0"为行号的下标 // 4.生成列
HSSFCell cell0 = row0.createCell(0); // 生成第一行的第一列
HSSFCell cell1 = row0.createCell(1); // 生成第一行的第二列
HSSFCell cell2 = row0.createCell(2); //生成第一行的第三列
HSSFCell cell3 = row0.createCell(3); //生成第一行的第四列
*/ //for循环方式进行构建"行和列"
//分别给sheet1和sheet2构建10行
for(int i = 0; i < 10; i++){ //生成10行
HSSFRow a = sheet1.createRow(i); //sheet1的行
HSSFRow b = sheet2.createRow(i); //sheet2的行
} //给行设置标题
HSSFRow row0OnSheet1 = sheet1.getRow(0);
HSSFRow row1OnSheet1 = sheet1.getRow(1); row0OnSheet1.createCell(0).setCellValue("姓名");
row0OnSheet1.createCell(1).setCellValue("年龄");
row0OnSheet1.createCell(2).setCellValue("联系方式");
row0OnSheet1.createCell(3);
row0OnSheet1.createCell(4); row1OnSheet1.createCell(2).setCellValue("QQ");
row1OnSheet1.createCell(3).setCellValue("微信");
row1OnSheet1.createCell(4).setCellValue("手机"); //合并单元格
//上下单元格合并操作 (将"姓名"、"年龄"两列每个单元格上下合并)
sheet1.addMergedRegion(new CellRangeAddress(0, 1, 0, 0)); //将第一列的“第一行与第二行”合并 参数说明:(0, 1, 0, 0) -->(第一行下标, 第二行下标, 第一列, 第一列下标)
sheet1.addMergedRegion(new CellRangeAddress(0, 1, 1, 1)); //左右单元格合并 (将第一行的三个单元格(下标为2 3 4)合并成一个单元格,"联系方式")
sheet1.addMergedRegion(new CellRangeAddress(0, 0, 2, 4)); //设置样式
//创建字体样式
HSSFFont font = wb.createFont();
font.setBold(true); //加粗
font.setColor((short)50); //设置字体颜色
font.setFontHeightInPoints((short) 12); //字体大小
//构建列的样式
HSSFCellStyle cs = wb.createCellStyle();
cs.setFont(font); //列的字体
cs.setAlignment(HorizontalAlignment.CENTER); //水平居中对齐
cs.setVerticalAlignment(VerticalAlignment.CENTER); //垂直居中对齐 //给excel列加上样式
for(int i = 0; i < 10; i++){
sheet1.setColumnWidth(i, 20 * 256);
HSSFCell cell = row0OnSheet1.getCell(i);
HSSFCell cell1 = row1OnSheet1.getCell(i);
if(cell != null){
cell.setCellStyle(cs);
}
if(cell1 != null){
cell1.setCellStyle(cs);
}
} //输出excel文件
FileOutputStream fileOut = new FileOutputStream("C:/workbook.xls");
wb.write(fileOut); }

生成文件结果

本文地址:https://www.cnblogs.com/whqworld/p/10564916.html

如果你有更简介的方式欢迎留言  !谢谢

Apache POI使用指南(HSSFWorkbook生成excel)的更多相关文章

  1. 使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法

    PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInput ...

  2. Apache poi简介及代码操作Excel

    一.简介 在我们进行企业的系统开发时,难免会遇到网页表格和Excel之间的操作问题(POI是个不错的选择) Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序 ...

  3. 通过poi的XSSF实现生成excel文件

    maven导入依赖jar包: <dependency> <groupId>org.apache.poi</groupId> <artifactId>po ...

  4. 使用java Apache poi 根据word模板生成word报表

    项目开发过程中,客户提出一堆导出报表的需求,需要导出word格式,页眉还需要加上客户公司的logo,试了几种方案,最后选择了用 Apache poi 加上自定义标签的方式实现. 目前功能还比较简单,一 ...

  5. Apache POI 一键上传(导入excel文件到数据库)

    import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; // HSSF:操作07版本之 ...

  6. org.apache.poi.ss.usermodel 类操作excel数据遗漏

    直接上图. 错误程序: 循环读取每一行的单元格数据部分 //for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) ...

  7. apache poi 生成excel

    ExcelBuilder.Java package com.coracle.yk.xmanager.util.poi; import com.coracle.yk.xframework.util.Bl ...

  8. Java中用Apache POI生成excel和word文档

    概述: 近期在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能.最后决定用Apache POI来完毕该项功能.本文就项目实现过程中的一些思路与代码与大家共享.同一时候.也作为自 ...

  9. 【Java】使用Apache POI生成和解析Excel文件

    概述 Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,分别有jxl和poi,2种方式. HSSF is the POI Project's pure ...

随机推荐

  1. Introduction to ES6上课笔记

    课程链接:https://scrimba.com/g/gintrotoes6 这个网站有几个热门的前端技术栈的免费课程,上课体验除了英语渣只能看代码理解听老师讲的一知半解之外,是极佳的学编程的网站了. ...

  2. mybatis中Insert后主键返回

    1.Mapper的写法,返回的这个int是受影响的行号 int insertNewUser(User newUser); 2.xml的写法 <!--返回主键 形式1 --> <ins ...

  3. Android Studio [WebView]

    WebViewActivity.java package com.xdw.a122; import android.graphics.Bitmap; import android.support.v7 ...

  4. .NET Core应用的三种部署方式

    .NET Core应用提供了三种部署方式: FDD FDD:Framework-dependent deployment,框架依赖部署.这种方式针对某个特定版本的.NET Core进行发布,只打包应用 ...

  5. CVPR 2019 论文解读 | 小样本域适应的目标检测

    引文 ​ 最近笔者也在寻找目标检测的其他方向,一般可以继续挖掘的方向是从目标检测的数据入手,困难样本的目标检测,如检测物体被遮挡,极小人脸检测,亦或者数据样本不足的算法.这里笔者介绍一篇小样本(few ...

  6. SharePoint 2013 Sandbox Solution

    昨天在写SharePoint EventReceiver的时候遇到一个问题,创建了一个local farm SharePoint solution,添加了一个ItemAdded(SPItemEvent ...

  7. c++中不需要显示指出struct

    赫  21:48:16请教个问题赫  21:49:53类声明前对私有继承的结构,的struct定义是什么作用?类声明前对该类私有继承的结构,的struct定义是什么作用?赫  21:51:21stru ...

  8. 阿里云服务器CentOS6.9 nexus私服使用

    exus安装成功之后,我们开始使用. 登录nexus: 访问地址:http:ip地址:8081/nexus 默认登录账号:admin 密码:admin123 登录成功之后页面: 点击[Reposito ...

  9. 【ADO.NET基础】后台获取前台控件

    C# 后台获取前台 input 文本框值.string aa=Request.Form[headself]; 那么要是后台给前台input文本框赋值呢? 后台 public string Headse ...

  10. Spring5源码解析-前奏:本地构建Spring5源码

    构建环境 macOS 10.13.6 JDK1.8 IntelliJ IDEA 2018.3.6 (Ultimate Edition) Spring v5.1.9.RELEASE Gradle 5.5 ...