java poi - tl 처리 World 동적 표
4063 단어 poi-tl
https://blog.csdn.net/liushimiao0104/article/details/78520120
저 는 버 전 을 한 번 썼어 요.
com.deepoove
poi-tl
1.4.2
poi - tl 에 대하 여
poi - tle: poi template languge 는 poi 기반 워드 템 플 릿 으로 문 서 를 만 드 는 오픈 소스 구성 요소 입 니 다.
문서 소개:http://deepoove.com/poi-tl/
GitHub 주소:https://github.com/Sayi/poi-tl
1. 동적 표 의 처리 에 대해 문 서 는 비교적 상세 하 게 작성 되 었 습 니 다. 저 는 간단 한 실제 활용 에 대한 소개 만 하 겠 습 니 다.
detail_table: 표 에 정 의 된 매개 변수 이름 을 물 어보 면 템 플 릿 표 의 임의의 위치 에 쓸 수 있 습 니 다.
DetailTablePolicy: 자신 이 만 든 class 는 이 표를 처리 하 는 데 사 용 됩 니 다.
이 줄 의 코드 는 이 표를 가 져 와 서 이 클래스 에 맡 기 는 것 과 같다.
이 곳 의 파일 경로 에 대해 서 는 참고 만 하 십시오. 프로젝트 프레임 워 크 가 다 르 고 시스템 이 다 르 면 파일 을 가 져 올 수 있 는 경로 에 차이 가 있 습 니 다.서 류 를 찾 지 못 하면 스스로 처리 해 야 합 니 다.
Configure config = Configure.newBuilder().customPolicy("detail_table", new DetailTablePolicy()).build();
XWPFTemplate template = XWPFTemplate.compile("src/test/resources/ .docx", config).render(datas);
월 드 에 사용자 정의 표 가 여러 개 있다 면 다음 과 같이 쓰 십시오.
Configure configs=Configure.createDefault();
configs.customPolicy("Table1", new DetailTablePolicy());
configs.customPolicy("Table2", new DetailTablePolicy());
XWPFTemplate template = XWPFTemplate.compile(worldTemplate,configs);
template.render(dataMap);
데이터
ldatas.put("detail_table",null);
Style headTextStyle = new Style();
TableStyle headStyle = new TableStyle();
TableStyle rowStyle = new TableStyle();
headTextStyle.setFontFamily("Hei");
headTextStyle.setFontSize(9);
headTextStyle.setColor("000000");
List headArr=new ArrayList();
for (int i = 0; i < 3; i++) {
RowRenderData header = RowRenderData.build(new TextRenderData(" ",headTextStyle), new TextRenderData(" ",headTextStyle));
headArr.add(header);
}
datas.put("detail_table", headArr);
2, 작성 DetailTablePolicy 클래스
table 은 이 표 에서 가 져 온 표 입 니 다. 이 표 의 위치 정 보 를 조작 할 수 있 습 니 다.
data 는 detailtable 의 데이터, 데 이 터 는 스스로 정의 합 니 다. 제 데이터 가 글꼴 크기 를 조절 해 야 하기 때문에 모든 List 를 사용 합 니 다. 격식
import com.deepoove.poi.NiceXWPFDocument;
import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.policy.DynamicTableRenderPolicy;
import com.deepoove.poi.policy.MiniTableRenderPolicy;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
/**
* Created by on 2019/5/28.
*/
public class DetailTablePolicy extends DynamicTableRenderPolicy {
//
//int goodsStartRow = 2;
//
int laborsStartRow = 1;
@Override
public void render(XWPFTable table, Object data) {
if (null == data) return;
// DetailData detailData = (DetailData) data;
List labors =(List)data;
if (null != labors) {
table.removeRow(laborsStartRow);
//
for (int i = 0; i < labors.size(); i++) {
XWPFTableRow insertNewTableRow = table.insertNewTableRow(laborsStartRow);
//
for (int j = 0; j < 2; j++) insertNewTableRow.createCell();
//
// NiceXWPFDocument.mergeCellsHorizonal(table, laborsStartRow, 0, 3);
MiniTableRenderPolicy.renderRow(table, laborsStartRow, labors.get(i));
}
}
}
}
표 스타일 제어 참고 가능
https://github.com/Sayi/poi-tl/blob/master/src/test/java/com/deepoove/poi/tl/example/PaymentExample.java
알림: World 에서 PDF 를 돌리 고 다운로드 하 는 기능 이 라면 springboot 프레임 워 크 로 포장 하여 windows 에 발표 하려 면 c 디스크 의 windows - > system 32, 파일 에 jacob - 1.19 - x64. dll 파일 을 넣 어야 합 니 다. 프로젝트 도 jacob - 1.1.9. jar 가방 을 사용 해 야 합 니 다.