poi实现Word文档的导出

引入poi依赖包

<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi-ooxml</artifactId>
	<version>4.0.0</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>poi</artifactId>
	<version>4.0.0</version>
</dependency>
<dependency>
	<groupId>org.apache.poi</groupId>
	<artifactId>ooxml-schemas</artifactId>
	<version>1.4</version>
</dependency>

创建XWPFDocument对象

/**
* XWPFDocument:代表一个docx文档
* XWPFParagraph:代表文档、表格、标题等种的段落,由多个XWPFRun组成
* XWPFRun:代表具有同样风格的一段文本
* XWPFTable:代表一个表格
* XWPFTableRow:代表表格的一行
* XWPFTableCell:代表表格的一个单元格
* XWPFChar:表示.docx文件中的图表
* XWPFHyperlink:表示超链接
* XWPFPicture:代表图片
* XWPFComment :代表批注
* XWPFFooter:代表页脚
* XWPFHeader:代表页眉
*/
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("Hello Word");

XWPFParagraph段落属性

paragraph.setAlignment(ParagraphAlignment.RIGHT);//设置对齐方式
paragraph.setFontAlignment(2);//段落对齐方式
paragraph.setVerticalAlignment(TextAlignment.BOTTOM);//文本垂直对齐方式(作用于表格)
paragraph.setWordWrapped(true);//设置文字环绕(当文字或者英文单词在一行显示不全时,是否移动到下一行)
paragraph.setNumID(BigInteger.valueOf(1));//设置段落编号(暂不清楚效果)
paragraph.setPageBreak(true);//设置分页(每一段内容都为新的一页的开始,表格新增数据时会新增一页)
paragraph.setBorderTop(Borders.DOT_DASH);//设置边框-上
paragraph.setBorderBottom(Borders.DOT_DASH);//设置边框-下
paragraph.setBorderLeft(Borders.DOT_DASH);//设置边框-左
paragraph.setBorderRight(Borders.DOT_DASH);//设置边框-右
paragraph.setBorderBetween(Borders.SINGLE);//设置段落之间边框(当两个段落之间分别设置上下边框时,即展示两个段落之间)
paragraph.setFirstLineIndent(400);//首行缩进(400-0.71cm)
paragraph.setIndentationFirstLine(400);//首行缩进(400-0.71cm)
paragraph.setIndentationHanging(400);//首行前进(400-0.71cm)
paragraph.setIndentationLeft(400);//整行左边缩进(400-0.71cm)
paragraph.setIndentationRight(400);//整行右边缩进(400-0.71cm)
paragraph.setIndentFromLeft(400);//整行左边缩进(400-0.71cm)
paragraph.setIndentFromRight(400);//整行右边缩进(400-0.71cm)
paragraph.setSpacingAfter(200);//设置段后间距(200-10磅)单位磅
paragraph.setSpacingAfterLines(400);//设置段后间距(400-4行)单位行
paragraph.setSpacingBefore(200);//设置段前间距(200-10磅)单位磅
paragraph.setSpacingBeforeLines(200);//设置段前间距(200-2行)单位行
paragraph.setSpacingBetween(3.1,LineSpacingRule.AT_LEAST);//设置多倍行距(20-2倍)-多倍行距AUTO(3-3倍),固定值EXACT(10-120磅),最小值AT_LEAST(10-120磅)
paragraph.setSpacingLineRule(LineSpacingRule.AUTO);//设置间距规则(AUTO-多倍行距,EXACT-固定值,AT_LEAST-最小值)

XWPFRun属性

//导出默认格式为(黑色,宋体,五号,两端对齐,单倍行距)
run.setText("测试文本");//设置文本内容
run.setFontSize(30);//设置文本字号
run.setFontFamily("仿宋", XWPFRun.FontCharRange.cs);//设置文本字体,FontCharRange字符字体系列(非必要)
run.setBold(true);//设置文本加粗
//字符间距
run.setTextScale(80);设置文本比例(80%)
run.setCharacterSpacing(100);//设置文本字符间距(100~0.18cm)
run.setTextPosition(200);//设置文本字符位置(200~3.53cm)
run.setKerning(200);//设置字体字间距(200~100磅)
//字体效果
run.setColor("FF0000");//设置文本颜色(十六进制)
run.setItalic(true);//设置斜体
run.setStrikeThrough(true);//设置文本删除线(效果:删除线)
run.setDoubleStrikethrough(true);//设置文本双删除线(效果:双删除线)
run.setSubscript(VerticalAlign.BASELINE);//设置下标(BASELINE-默认,SUPERSCRIPT-上标,SUBSCRIPT-下标);例如:上标-35°、下标-O₂
run.setShadow(true);//设置阴影(效果:阴影)
run.setEmbossed(true);//设置浮雕字体(效果:阳文)
run.setImprinted(true);//设置印记(效果:阴文)
run.setSmallCaps(true);//设置小型大写字母(效果:小型大写字母)
run.setCapitalized(true);//设置全部大写字母(效果:全部大写字母a->A)
run.setVanish(true);//设置文字隐藏(效果:隐藏文字)
run.setVerticalAlignment("baseline");//设置文本对齐方式(baseline-默认,superscript-上标,subscript-下标);例如:上标-35°、下标-O₂
run.setEmphasisMark("circle");//设置标记(none-默认,dot-小圆点,comma-逗号,circle-圆圈,underDot-下点)
run.setUnderline(UnderlinePatterns.THICK);//设置下划线
run.setUnderlineColor("FFFFFF");//设置下划线颜色
run.setUnderlineThemeColor("FFFFFC");//设置下划线主题颜色
run.setTextHighlightColor("FF0000");//设置文本突出显示颜色
//整体效果
run.addBreak();//文本换行
run.addCarriageReturn();//回车键类似于换行
run.addTab();//TAB键

本地测试代码

public static void main(String[] args) {
   FileOutputStream fos = null;
   String fileName = UUIDUtil.randomUUID8();
   try {
       fos = new FileOutputStream("E:/test/" + fileName + ".docx");
       XWPFDocument document = new XWPFDocument();
       XWPFParagraph paragraph = document.createParagraph();
       XWPFRun run = paragraph.createRun();
       run.setText("Hello Word");
       document.write(fos);
       Desktop.getDesktop().open(new File("E:/test/" + fileName + ".docx"));
   } catch (Exception e) {
       e.printStackTrace();
   } finally {
       try {
           if (fos != null) {
               fos.flush();
               fos.close();
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值