java导出excel 样式_POI导出自定义样式EXCEL数据样式

本文介绍了如何使用Apache POI库在Java中自定义样式导出Excel文件。POI是一个开源的Java API,用于读写Microsoft Office格式的文件,尤其是Excel。文章提到了POI的优势,如用户量大、功能齐全,并提供了导出Excel时设置列宽、添加注释和样式的具体代码示例。
摘要由CSDN通过智能技术生成

d4b863d48231dbec31be38540a31a406.png

简介:

POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。所以POI的主要功能是可以用Java操作Microsoft Office的相关文件,但是一般我们都是用来操作Excel相关文件。

需要依赖:

org.apache.poipoi3.17org.apache.poipoi-ooxml3.17

优劣势:

相较于其他插件,POI 的用户量是最多的。简单易用,功能完善,项目开源,对 Excel 的读写操作功能十分强大,设置到单元格样式、标注脚注、设置打印 、插入图片、超链接等等,基本满足业务的所有需求。(网上有人说 POI 会出现莫名的 bug,数据替换参数总有失败,暂时没发现这种 bug了。)不过 POI 操作 word 的时候,只能创建简单的 word 文档,不过样式文字的读写操作也是完全满足的,只是相较操作 Excel 不算友好。POI 导出数据量过大的时候,容易造成内存溢出。

7886c30db03602e28bd48ec1a21242c0.png

具体代码实现如下:

private void exportExcel(String parentTitle, String sheetName,

String[] headers, String[] fields, Collection dataset,

OutputStream out, String pattern, String date, int[] columnWidth) {

// 声明一个工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

// 生成一个表格

HSSFSheet sheet = workbook.createSheet(sheetName);

// 设置表格默认列宽度为15个字节

// sheet.setDefaultColumnWidth((short) 18);

// 设置表格列宽,列宽计算公式为(int)((columnWidth+0.72)*256)

for (int i = 0; i < columnWidth.length; i++) {

sheet.setColumnWidth(i, (int) ((columnWidth[i] + 0.72) * 256));

}

// 声明一个画图的顶级管理器

HSSFPatriarch patriarch = sheet.createDrawingPatriarch();

// 定义注释的大小和位置,详见文档

HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0,

0, 0, 0, (short) 4, 2, (short) 6, 5));

// 设置注释内容

comment.setString(new HSSFRichTextString(parentTitle));

// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.

comment.setAuthor("billz");

// 主标题

HSSFRow pTitleRow = sheet.createRow(0);

HSSFCell pTitleCell = pTitleRow.createCell(0);

pTitleCell.setCellStyle(getParentTitleStyle(workbook));

pTitleCell.setCellValue(new HSSFRichTextString(parentTitle));

} catch (Exception e) {

e.printStackTrace();

} finally {

// 清理资源

}

}

try {

workbook.write(out);

} catch (IOException e) {

e.printStackTrace();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值