1.pom 引入
<!--word報告生成依賴-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2.java代碼示例文章來源:http://www.zghlxwxcb.cn/news/detail-729153.html
public class test {
public static void main(String[] args) throws IOException, InvalidFormatException {
log.info("Word文檔開始生成!");
XWPFDocument document = new XWPFDocument();
WriteHomePage(document,1,"SSS"); //寫首頁
WriteText(document); //寫表格前正文與題注
WriteFirstTable(document); //寫第一個表格
FileOutputStream out = new FileOutputStream("Report.docx");
document.write(out);
out.close();
document.close();
log.info("Word文檔已成功生成!");
}
public static XWPFDocument WriteHomePage(XWPFDocument document, int orb, String salliteName) throws IOException, InvalidFormatException {
//插入圖片
String imgFile = "E:\\test.png";
byte[] imageBytes = Files.readAllBytes(new File(imgFile).toPath());
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run00 = paragraph.createRun();
run00.setText(" ");
int width = 200; // 圖片寬度
int height = 140; // 圖片高度
int pictureType = XWPFDocument.PICTURE_TYPE_PNG;
run00.addPicture(new ByteArrayInputStream(imageBytes), pictureType, imgFile, Units.toEMU(width), Units.toEMU(height));
//輸入標題
XWPFParagraph title1 = document.createParagraph();
XWPFRun run = title1.createRun();
run.setText("O00");
run.setUnderline(UnderlinePatterns.SINGLE);
run.setFontFamily("Times New Roman");
run.setFontSize(28);
run.setBold(true);
run.setItalic(true);
//不同字體設置的參數大小不同,需要嘗試
title1.setIndentationFirstLine(1130);// <!-- 設置首行縮進2字符 單位是 1/20 磅 -->
run.addBreak();
XWPFParagraph title2 = document.createParagraph();
XWPFRun run1 = title2.createRun();
run1.setText(salliteName+" Continuity of Data");
run1.setFontFamily("Times New Roman");
run1.setFontSize(28);
run1.setBold(true);
title2.setIndentationFirstLine(1130); // <!-- 設置首行縮進2字符 -->
//設置空白行
for (int i = 0; i < 16; i++) {
XWPFParagraph blank = document.createParagraph();
blank.createRun().setText("");
}
// 創(chuàng)建段落并設置右對齊樣式
XWPFParagraph footer = document.createParagraph();
footer.setAlignment(ParagraphAlignment.RIGHT);
// 創(chuàng)建頁腳并添加到段落中
XWPFRun run2 = footer.createRun();
run2.setText("Data Center");
run2.setFontSize(18);
run2.setFontFamily("Times New Roman");
run2.addBreak();
XWPFRun run3 = footer.createRun();
run3.setText("www.xxx.com");
run3.setFontSize(18);
run3.setFontFamily("Times New Roman");
run3.setUnderline(UnderlinePatterns.SINGLE);
run3.addBreak();
return document;
}
public static XWPFDocument WriteText(XWPFDocument document){
//新建一頁,創(chuàng)建表格
XWPFParagraph newPage = document.createParagraph();
newPage.setPageBreak(true);
XWPFParagraph para = document.createParagraph();
XWPFRun run = para.createRun();
run.setText("該報告數據內容正文如下。");
run.setFontFamily("宋體");
run.setFontSize(12);//小四
// XWPFFont font = ;
para.setIndentationFirstLine(500); // <!-- 設置首行縮進2字符 -->
para.setSpacingBetween(1.5f);
//表題注
XWPFParagraph para2 = document.createParagraph();
XWPFRun runPara2 = para2.createRun();
runPara2.setText("表1 數據概況");
runPara2.setFontFamily("宋體");
runPara2.setFontSize(12);
para2.setAlignment(ParagraphAlignment.CENTER);
para2.setVerticalAlignment(TextAlignment.CENTER);
para2.setSpacingBetween(1.5f);
return document;
}
//輸入表格
public static XWPFDocument WriteFirstTable(XWPFDocument document){
int row = 2;
int col = 2;
XWPFTable table = document.createTable(row, col);
// 設置表格行高
for (XWPFTableRow tableRow : table.getRows()) {
tableRow.setHeight(500);
}
table.setStyleID("Table Grid");
table.setWidth("100%");
//設置表格標題
String[] titleArr = {"數據類型","數據連續(xù)性"};
XWPFTableRow titleRow = table.getRow(0);
//設置表頭內容和樣式,
for (int i = 0; i < col; i++) {
XWPFTableCell cell = titleRow.getCell(i);
cell.getCTTc().addNewTcPr().addNewVAlign().setVal(STVerticalJc.CENTER);
XWPFParagraph p = cell.getParagraphs().get(0);
p.setAlignment(ParagraphAlignment.CENTER);
XWPFRun run3 = p.createRun();
run3.setBold(true); // 設置字體加粗
run3.setText(titleArr[i]);
}
//CTHMerge 橫向合并,CTVMerge縱向合并, STMerge.RESTART 表示開始合并,為 STMerge.CONTINUE 表示繼續(xù)合并
// titleRow.getCell(4).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
// titleRow.getCell(5).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
// XWPFParagraph p = titleRow.getCell(4).getParagraphs().get(0);
// p.setAlignment(ParagraphAlignment.CENTER);
XWPFTableRow row1 = table.getRow(1);
row1.getCell(0).setText("11");
row1.getCell(1).setText("12");
XWPFTableRow row2 = table.getRow(1);
row2.getCell(0).setText("21");
row2.getCell(1).setText("22");
return document;
}
}
3.效果展示文章來源地址http://www.zghlxwxcb.cn/news/detail-729153.html
到了這里,關于java導出word(含圖片、表格)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!