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 ...
随机推荐
- github博客Hexo引流到微信
相信有不少小伙伴都在github上创建了属于自己的博客,其中用Hexo的Next主题应该不少,那么,我们究竟该如何将博客的流量引流到微信呢?今天就来带你看一看. 如何引流 现在网上有一种套路,当你在看 ...
- 用call或bind实现bind()
一.bind方法 让我们看一下MDN上对bind方法的解释 bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用 ...
- SPSS学习笔记参数检验—两独立样本t检验
目的:利用来自两个总体的独立样本,推断两个总体的均值是否存在差异. 适用条件: (1)样本来自的总体应服从或近似服从正态分布: (2)两样本相互独立,两样本的样本量可以不等: 案例分析: 案例描述:评 ...
- 解决行内块元素(inline-block)之间的空格或空白问题
一.问题产生 由于html代码格式化后,标签会缩进或者换行.由于浏览器默认处理导致元素在页面显示中出现单个空格问题,尤其在行内或者行内块元素布局时影响比较明显 例如: 代码 页面显示 二.解决方案 这 ...
- 无暇代码(js的整洁之道)
如果你关注代码本身和代码的编写方式,而不是只关心它是否能工作,那么你写代码是有一定的水准.专业开发人员将为未来的自己和“其他人”编写代码,而不仅仅只编写当前能工作就行的代码.在此基础上,简洁代码可以定 ...
- 使用gtest(googletest)进行c++单元测试
这是系列文章的第三篇,前两篇https://www.cnblogs.com/gaopang/p/11243367.html和https://www.cnblogs.com/gaopang/p/1158 ...
- 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识
作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...
- 在Linux环境下采用压缩包方式安装JDK 13
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11663731.html 可以,转载,出处,格式,懂?? 什么是JDK?? 好吧如果你不知道这个问题的话我 ...
- Java后端工程师必备书单(从Java基础到分布式)
Java开发工程师一般负责后端开发,当然也有专门做Java Web的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展. 今天我们就来介绍一下Java后端开发者的书单. 首先要 ...
- A-01 最小二乘法
目录 最小二乘法 一.最小二乘法--代数法 二.最小二乘法--矩阵法 三.最小二乘法优缺点 3.1 优点 3.2 缺点 更新.更全的<机器学习>的更新网站,更有python.go.数据结构 ...