简介:
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 导出数据量过大的时候,容易造成内存溢出。
具体代码实现如下:
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();