java word导出表格_Java实现word导出(表格带图片)

一、 关键词

POI:Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能

POI-TL:基于Apache POI的Word模板引擎,通过插件机制使其具有高度扩展性

word格式:

1. doc:POI组件HWPF组件支持对doc文件的操作

2. docx:POI组件XWPF组件支持对docx文件的操作

3. POI-TL使用的是XWPF组件,所以更好的支持docx文件的操作。

二、 简单用法示例

1. 依赖

org.apache.poi

poi

4.1.0

org.apache.poi

poi-ooxml

4.1.0

com.deepoove

poi-tl

1.5.0

2. word模板

3. 初始化数据

public Map initWordData() throws Exception {

Map renderData = new HashMap<>();

// 文本标题

TextRenderData title = new TextRenderData("这是一个标题");

renderData.put("title", title);

// 文本副标题

TextRenderData subTitle = new TextRenderData("这是一个副标题");

renderData.put("sub_title", subTitle);

// 文本内容

StringBuilder contentValue = new StringBuilder()

.append("内容一")

.append(System.lineSeparator())

.append("内容二")

.append(System.lineSeparator())

.append("内容三")

.append(System.lineSeparator())

.append("内容四")

.append(System.lineSeparator())

.append("......");

TextRenderData content = new TextRenderData("00C1FF" ,contentValue.toString());

renderData.put("content", content);

// 作者信息

Map author = new HashMap<>();

author.put("name", "作者");

author.put("email", new HyperLinkTextRenderData("[email protected]","https://www.baidu.com"));

PictureRenderData avatar = new PictureRenderData(100, 100, ".jpg", BytePictureUtils.getUrlBufferedImage("https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1566878817&di=ecc0bc000703c669f5d660ca9bb70f17&src=http://img11.photophoto.cn/20090505/0035035789118626_s.jpg"));

author.put("avatar", avatar);

renderData.put("author", author);

// 表格1 (使用表格模板)

RowRenderData header = RowRenderData.build("单元格1", "单元格2");

RowRenderData row1 = RowRenderData.build("测试11", "测试12");

RowRenderData row2 = RowRenderData.build("测试21", "测试22");

List table1RenderData = new ArrayList<>();

table1RenderData.add(row1);

table1RenderData.add(row2);

MiniTableRenderData miniTableRenderData = new MiniTableRenderData(header, table1RenderData, MiniTableRenderData.WIDTH_A4_MEDIUM_FULL);

renderData.put("table1", miniTableRenderData);

// 表格2 (需要添加填充表信息策略)

List table2RenderData = new ArrayList<>();

table2RenderData.add(RowRenderData.build("张三","地址xxx"));

table2RenderData.add(RowRenderData.build("李四","地址xxx"));

renderData.put("table2", table2RenderData);

return renderData;

}

4. 定义现有表格填充数据策略

// 自定义表格填充策略

public class DetailTablePolicy extends DynamicTableRenderPolicy {

// 填充的起始行,

// 注意:行号从0开始

p

你可能感兴趣的:(java,word导出表格)