文档章节

POI使用整理

syyang32376678
 syyang32376678
发布于 2017/08/28 16:23
字数 743
阅读 19
收藏 1

在结合前辈大牛,以及自己亲自实践下,整理了一下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
0
12
PoiUtil.java 用于excel间sheet复制

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

彭苏云
2013/08/30
0
1
Java 工具集 Hutool 4.0.10 发布,bug 修复

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

路小磊
04/17
0
0
Apache Tika 1.0 正式版发布

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

红薯
2011/11/08
1K
0
Hutool 4.1.1 发布,Java 工具集

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

路小磊
06/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 快捷键

快捷键图标。 官方的下载地址为:https://atlassianblog.wpengine.com/wp-content/uploads/2018/01/keyboard-shortcuts-infographics.pdf...

honeymose
今天
2
0
Apache限定目录解析PHP,限制user_agent,PHP相关的配置

Apache限定目录解析PHP 配置前访问upload/index.php [root@test-a ~]# curl -x192.168.77.139:80 'www.test.com/upload/index.php'This is upload diretory 配置,/usr/local/apache2.4/......

野雪球
今天
3
0
java.util.Concurrent.Exchanger源码

类图 源码: package java.util.concurrent;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent......

狼王黄师傅
今天
6
0
Kubernetes里的secret最基本的用法

Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。 Secret可以以Volume或者环境变量的方式使用。 使用如下命令...

JerryWang_SAP
昨天
5
0
2018-11-20学习笔记

1. python数据类型: 给变量赋值什么样的值,变量就是什么样的类型 给变量赋值整数,变量就是整数类型 给变量赋值字符串,变量就是字符串类型 123 和“123”一样吗? 在python中 单引号 与双...

laoba
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部