文档章节

POI使用整理

syyang32376678
 syyang32376678
发布于 2017/08/28 16:23
字数 743
阅读 15
收藏 1
点赞 0
评论 0

在结合前辈大牛,以及自己亲自实践下,整理了一下POI组Excel并导出的简单操作

代码如下:

/**========= EXCEL 表格设置 BEGIN =========**/

/** 创建一个workbook,对应一个Excel文件 **/

HSSFWorkbook wb = new HSSFWorkbook();

//设置打印是每页自动打印表头wb.SetRepeatingRowsAndColumns(a, m, n, x, y);

// m:起始列号;n:结束列号;x:起始行号;y:结束行号;即:可打印行属性,也可打印列属性

wb.SetRepeatingRowsAndColumns(0, -1, -1, 2, 3);

 

/** 在workbook中添加一个sheet,对应Excel中的一个sheet */

HSSFSheet sheet = wb.createSheet("Sheet名称");

//设置是否显示excel网格线 

sheet.setDisplayGridlines(false);

//设置是否打印excel网格线 

sheet.setPrintGridlines(false);

//设置页边距

sheet.setMargin(HSSFSheet.TopMargin, (double)0.5/3); //设置上边距

sheet.setMargin(HSSFSheet.BottomMargin, (double)0.5/3); //设置下边距

sheet.setMargin(HSSFSheet.LeftMargin,(double)0.5); //设置左边距

sheet.setMargin(HSSFSheet.RightMargin,(double)-50); //设置右边距

//设置列宽 setColumnWidth(colindex, width)

// colindex- 要设置的列(从0开始)

// width - 以字符宽度的1 / 256为单位的宽度

// 如果将列宽设置为八个字符宽,setColumnWidth(columnIndex,8 * 256)

sheet.setColumnWidth(0, 8* 256);

sheet.setColumnWidth(1, 37* 256);

sheet.setColumnWidth(2, 15* 256);

sheet.setColumnWidth(3, 15* 256);

sheet.setColumnWidth(4, 25* 256);

sheet.setColumnWidth(5, 31* 256);

sheet.setColumnWidth(6, 8* 256);

//设置单元格合并 CellRangeAddress(m, n, (short) x,(short) y)

//m:起始行号;n:结束行号;x:起始列号;y:结束列号

CellRangeAddress region = new CellRangeAddress(0, 0, (short) 0,(short) 6);

CellRangeAddress region1 = new CellRangeAddress(2, 3, (short) 0, (short) 0);

CellRangeAddress region4 = new CellRangeAddress(2, 3, (short) 1, (short) 1);

CellRangeAddress region5 = new CellRangeAddress(2, 2, (short) 2, (short) 3);

CellRangeAddress region6 = new CellRangeAddress(2, 3, (short) 4, (short) 4);

CellRangeAddress region7 = new CellRangeAddress(2, 3, (short) 5, (short) 5);

CellRangeAddress region8 = new CellRangeAddress(2, 3, (short) 6, (short) 6);

//合并样式写入

sheet.addMergedRegion(region);

sheet.addMergedRegion(region1);

sheet.addMergedRegion(region4);

sheet.addMergedRegion(region5);

sheet.addMergedRegion(region6);

sheet.addMergedRegion(region7);

sheet.addMergedRegion(region8);

 

/** 打印设置 **/

HSSFPrintSetup printSetup = sheet.getPrintSetup();

printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); //设置纸张类型(这里是A4)

printSetup.setLandscape(true); // 设置打印方向,true:横向,false:纵向(默认)

 

/** 字体设置 **/

HSSFFont font = wb.createFont();

font.setColor(HSSFColor.BLACK.index); //字体颜色

font.setFontName("宋体"); //字体类型

font.setFontHeightInPoints((short) 11); //字体大小

 

/** 设置单元格样式 **/

HSSFCellStyle style = wb.createCellStyle();

style.setWrapText(true); //设置自动换行

style.setAlignment(CellStyle.ALIGN_LEFT); //水平居中 style.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //垂直居中 style.setFont(font); //引入字体设置

style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框 style.setBorderLeft(HSSFCellStyle.BORDER_THIN); //左边框 style.setBorderTop(HSSFCellStyle.BORDER_THIN); //上边框 style.setBorderRight(HSSFCellStyle.BORDER_THIN); //右边框

 

HSSFRow row = sheet.createRow(0); //创建行 HSSFCell cell = row.createCell(0); //创建第0行,第0列

row.setHeight((short)((40 * 15.625))); //设置行高

cell.setCellStyle(style); //使用样式 /**========= EXCEL 表格设置 END =========**/

 

/**========= EXCEL 表格导出 BEGIN =========**/

SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");

String dateString = sf.format(new Date()); //获取时间,并格式化;用于文件名区别 String name = "xxxx-" + (dateString); //组装文件名

ByteArrayOutputStream os = new ByteArrayOutputStream();

wb.write(os);

byte[] content = os.toByteArray();

InputStream is = new ByteArrayInputStream(content);

// 设置response参数,可以打开下载页面 response.reset();

response.setContentType("application/vnd.ms-excel");

response.setCharacterEncoding("UTF-8");

response.setHeader("Content-Disposition", "attachment;filename="

+ new String(name.getBytes(),"iso-8859-1") + ".xls");

ServletOutputStream out = response.getOutputStream();

BufferedInputStream bis = null;

BufferedOutputStream bos = null;

try {

bis = new BufferedInputStream(is);

bos = new BufferedOutputStream(out);

byte[] buff = new byte[2048];

int bytesRead;

// Simple read/write loop.

 

while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {

bos.write(buff, 0, bytesRead);

}

} catch (Exception e) {

e.printStackTrace();

logger.error("Export UserInfo Error:" + e);

} finally {

if (bis != null)

bis.close();

if (bos != null)

bos.close();

if (out != null) {

out.flush();

out.close();

}

if (os != null) {

os.close();

}

} /**========= EXCEL 表格导出 END=========**/

© 著作权归作者所有

共有 人打赏支持
syyang32376678
粉丝 0
博文 1
码字总数 743
作品 0
JAVA使用POI操作excel

一直想写一个poi的使用的总结,话说我第一份正式工作接到的第一个工作就是当时TL让我去整理项目的数据字典,即把内容插入到CSV上,然后把csv的内容插入到数据库中,而且我印象极深的当时使用...

王小明123 ⋅ 2013/01/09 ⋅ 12

PoiUtil.java 用于excel间sheet复制

前言:apache提供的poi功能确实比较强大,但是不明白为什么没有相应的方法实现不同excel文件中sheet的复制功能。这也是本文整理PoiUtil工具类的初衷。网上有相关的解决方案,在参考了网上诸多...

彭苏云 ⋅ 2013/08/30 ⋅ 1

Java 工具集 Hutool 4.0.10 发布,bug 修复

Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非...

路小磊 ⋅ 04/17 ⋅ 0

Apache Tika 1.0 正式版发布

Apache Tika 1.0 正式版发布了,该版本包含大量的改进和bug修复,详情请看 CHANGES Tika是一个内容抽取的工具集合(a toolkit for text extracting)。它集成了POI, Pdfbox 并且为文本抽取工作...

红薯 ⋅ 2011/11/08 ⋅ 0

关于PoiUtil工具类整理过程中的一些问题

我的上一篇博文已经说了为什么会去整理PoiUtil这个工具类,整理的过程其实也是有趣又漫长(耗时差不多两天)的过程,期间遇到的一些问题做记录如下: 1、导出多sheet的excel,sheet样式丢失问...

彭苏云 ⋅ 2013/08/30 ⋅ 0

Java 工具集 Hutool 4.0.11 发布,bug 修复

Hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以“甜甜的”。Hutool最初是我项目中“util”包的一个整理,后来慢慢积累并加入更多非...

路小磊 ⋅ 05/08 ⋅ 0

内容抽取工具集合--Apache Tika

Tika是一个内容抽取的工具集合(a toolkit for text extracting)。它集成了POI, Pdfbox 并且为文本抽取工作提供了一个统一的界面。其次,Tika也提供了便利的扩展API,用来丰富其对第三方文件格...

匿名 ⋅ 2009/05/07 ⋅ 4

Apache Tika 1.6 发布,内容抽取工具集合

Apache Tika 1.6 发布,此版本包括大量的改进和 bug 修复,现已提供下载,详情请查看更新日志。 Tika是一个内容抽取的工具集合(a toolkit for text extracting)。它集成了POI, Pdfbox 并且为...

oschina ⋅ 2014/09/06 ⋅ 1

Apache Tika 1.9 发布,内容抽取工具集合

Apache Tika 1.9 发布,此版本包括一些改进和 bug 修复,详细改进请看更新日志: * The ability to use the cTAKES clinical text knowledge extraction system for biomedical data is now......

oschina ⋅ 2015/06/24 ⋅ 4

POI之PPT-元素操纵

POI之PPT-元素操纵 最近笔者在调研POI API操纵PPT方面的内容,主要目的在于调查POI对PPT中的元素可操控性有多大,以及应用POI API具体能够实现哪些功能。以下是笔者所列举的调查项和结果,调...

chace0120 ⋅ 2015/07/09 ⋅ 7

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 5分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 12分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 18分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 32分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 35分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 43分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 今天 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部