说 明:

  • 由于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. 线上CPU飙升100%问题排查,一篇足矣

    一.引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高. 二.问题复现 线上系统突然 ...

  2. 遗传编程(GA,genetic programming)算法初探,以及用遗传编程自动生成符合题解的正则表达式的实践

    1. 遗传编程简介 0x1:什么是遗传编程算法,和传统机器学习算法有什么区别 传统上,我们接触的机器学习算法,都是被设计为解决某一个某一类问题的确定性算法.对于这些机器学习算法来说,唯一的灵活性体现在 ...

  3. php下api接口的并发http请求

    php下api接口的并发http请求 ,提高app一个页面请求多个api接口,页面加载慢的问题: func_helper.php/** * 并发http请求 * * [ * 'url' //请求地址 ...

  4. 用Promise处理异步函数

    处理函数之间的异步问题,使其同步进行的其中一种方法,就是使用Promise.Promise在ES6中被提出. 使用示例如下: 假如有三个函数,要求按getone.gettwo.getthree的顺序执 ...

  5. Linux 中文打字软件 gtypist 光标错位解决

    在windows 下有 金山打字和其他的跟打软件,在Linux下找到了 gtypist 为练习中文打字,该软件分为练习模式的速度测试模式,在gtypist-2.9.5版中会出现以下几个问题: 一是在练 ...

  6. Eureka实战-2【构建Multi Zone Eureka Server】

    工程pom中公共依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEnco ...

  7. Java基础学习笔记(一) - 基础语法

    1.Java程序开发过程 编译: 是指将我们编写的Java源文件翻译成JVM认识的class文件,javac编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功. 运行: ...

  8. 算法题解:最大或最小的K个数(海量数据Top K问题)

    题目 输入 n 个整数,找出其中最小的 k 个数.例如输入4.5.1.6.2.7.3.8 这8个数字,则最小的4个数字是1.2.3.4. 初窥 这道题最简单的思路莫过于把输入的 n 个整数排序,排序之 ...

  9. PHP SPL扩展库简单使用

    1. __autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: ./myClass.php <?php class myClass { ...

  10. Unknown column 'user_id' in 'where clause'

    mapper位置报错Unknown column 'user_id' in 'where clause' 可能是数据库中的字段user_id包含空格