Apache POI使用指南(HSSFWorkbook生成excel)
说 明:
- 由于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组件说明
| 组件 | 组件类型 |
| 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)的更多相关文章
- 使用POI做的一个生成Excel的工具类。包含了导出Excel和解析Excel方法
PoiExcelUtils.java /** * */ package com.common.office; import java.io.File; import java.io.FileInput ...
- Apache poi简介及代码操作Excel
一.简介 在我们进行企业的系统开发时,难免会遇到网页表格和Excel之间的操作问题(POI是个不错的选择) Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序 ...
- 通过poi的XSSF实现生成excel文件
maven导入依赖jar包: <dependency> <groupId>org.apache.poi</groupId> <artifactId>po ...
- 使用java Apache poi 根据word模板生成word报表
项目开发过程中,客户提出一堆导出报表的需求,需要导出word格式,页眉还需要加上客户公司的logo,试了几种方案,最后选择了用 Apache poi 加上自定义标签的方式实现. 目前功能还比较简单,一 ...
- Apache POI 一键上传(导入excel文件到数据库)
import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; // HSSF:操作07版本之 ...
- org.apache.poi.ss.usermodel 类操作excel数据遗漏
直接上图. 错误程序: 循环读取每一行的单元格数据部分 //for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) ...
- apache poi 生成excel
ExcelBuilder.Java package com.coracle.yk.xmanager.util.poi; import com.coracle.yk.xframework.util.Bl ...
- Java中用Apache POI生成excel和word文档
概述: 近期在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能.最后决定用Apache POI来完毕该项功能.本文就项目实现过程中的一些思路与代码与大家共享.同一时候.也作为自 ...
- 【Java】使用Apache POI生成和解析Excel文件
概述 Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,分别有jxl和poi,2种方式. HSSF is the POI Project's pure ...
随机推荐
- C++ 变量判定的螺旋法则
C++ 中一个标识符配合着各种修饰界定符,使得标识符的本意不那么直观一眼就能看出,甚至需要仔细分析,才能知道该标识符的具体你含义. 比如: void (*signal(int, void (*fp)( ...
- Centos6安装MySQL5.7(yum方式)
1. 下载并安装用来配置mysql的yum源的rpm包 # 下载 wget http://repo.mysql.com/mysql57-community-release-el6-10.noarch. ...
- wait()与notify()
一,前言 简单画了一下线程的流程图,只是一个大概.如图所示,线程有多种状态,那么不同状态之间是如何切换的,下面主要总结关于wait()和notify()的使用. 二,wait() wait ...
- Spring boot 梳理 - SpringApplication
简单启动方式 public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, a ...
- Navicat 设置自增长初始值
设置主键自增初始值
- 『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
0 序篇 2015年11月,Google正式发布了Tensorflow的白皮书并开源TensorFlow 0.1 版本. 2017年02月,Tensorflow正式发布了1.0.0版本,同时也标志 ...
- jobs后台任务
前台作业:占据了命令提示符,就是你当前可以操作的作业后台作业:启动之后,释放命令提示符,后续的操作在后台完成 前台——>后台 ctrl+z:把正在前台的作业送往后台,这时作业的状态是暂停. CO ...
- Locomotion和Navigation的区别
Locomotion和navigation两者都是移动.漫游的意思.但是locomotion是一个比navigation更大的概念,它指的是所有的第一人称视角的变换(first-person moti ...
- JavaScript系列:函数式编程(开篇)
前言: 上一篇介绍了 函数回调,高阶函数以及函数柯里化等高级函数应用,同时,因为正在学习JavaScript·函数式编程,想整理一下函数式编程中,对于我们日常比较有用的部分. 为什么函数式编程很重要? ...
- Android_布局
<该文章参考各大博客以及书籍总结而来,如有问题欢迎指出^ ^> 一.五大传统布局+新布局 线性布局——LinearLayout 相对布局——RelativeLayout 帧布局——Fram ...