导出Word文档整理
前言
业务需要将数据库中存的图片导出成word文档,并给这些图片按照文件名生成目录。以下为解决方案,通常在导出文件时,poi使用的频率较高,可以导出各类模板类的和非模板类的文件,但是在导出word,并生成目录的时候发现其解决问题方式相对来说比较复杂。所以,通过调查后发现Spire.Doc,可以实现当前业务需求。以下是本次问题解决整理。
Apache POI
添加依赖
org.apache.poi
poi
3.17
org.apache.poi
poi-ooxml
3.17
org.apache.poi
ooxml-schemas
1.1
示例代码
public static void main(String[] args) throws IOException{
XWPFDocument document= new XWPFDocument();
FileOutputStream out = new FileOutputStream(new File("F:\\Sources\\test.docx"));
//添加标题
XWPFParagraph titleParagraph = document.createParagraph();
//设置段落居中
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun titleParagraphRun = titleParagraph.createRun();
titleParagraphRun.setText("Java PoI");
titleParagraphRun.setColor("000000");
titleParagraphRun.setFontSize(20);
//段落
XWPFParagraph firstParagraph = document.createParagraph();
XWPFRun run = firstParagraph.createRun();
run.setText("Java POI 生成word文件。");
run.setColor("696969");
run.setFontSize(16);
//设置段落背景颜色
CTShd cTShd = run.getCTR().addNewRPr().addNewShd();
cTShd.setVal(STShd.CLEAR);
cTShd.setFill("97FFFF");
//换行
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun paragraphRun1 = paragraph1.createRun();
paragraphRun1.setText("\r");
//基本信息表格
XWPFTable infoTable = document.createTable();
//去表格边框
infoTable.getCTTbl().getTblPr().unsetTblBorders();
//列宽自动分割
CTTblWidth infoTableWidth = infoTable.getCTTbl().addNewTblPr().addNewTblW();
infoTableWidth.setType(STTblWidth.DXA);
infoTableWidth.setW(BigInteger.valueOf(9072));
//表格第一行
XWPFTableRow infoTableRowOne = infoTable.getRow(0);
infoTableRowOne.getCell(0).setText("职位");
infoTableRowOne.addNewTableCell().setText(": Java 开发工程师");
//表格第二行
XWPFTableRow infoTableRowTwo = infoTable.createRow();
infoTa