在无字体时使用word样式,并设置字体样式

1.引用依赖

        <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>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>

2. 引用word样式

2.1加载模板 获取word模板样式

        DefaultResourceLoader rl = new DefaultResourceLoader();
        //加载文件
        Resource rs = rl.getResource("word的文件路径"); 
        //加载文件流,创建XWPFDocument 对象
        XWPFDocument temp = new XWPFDocument(rs.getInputStream());
        //获取模板的样式
        CTStyles templateStyle = temp.getStyle();
       

3.设置word的样式

3.1将模板的样式加载到要设置的word上

    //inputStream 为要设置样式的word文件流
   // 要设置的word文档对象
  XWPFDocument doc = new XWPFDocument(inputStream);
 //将模板的样式赋值到要设置样式的word上,这样doc则可以设置word里的样式:包括字体样式等
 XWPFStyles styles = doc.createStyles();
 styles.setStyles(templateStyle );
 

3.1.1设置word纸张大小和方向

​
    /**
     *纸张大小解析:
     * Letter:612*792
     * LetterSmall:612*792
     * Tabloid:792*1224
     * Ledger:1224*792
     * Legal:612*1008
     * Statement:369*612
     * Executive:540*720
     * A0:2384*3371
     * A1:1685*2384
     * A2:1190*1684
     * A3:842*1190
     * A4:595*842
     * A4Small:595*842
     * A5:420*595
     * B4:729*1032
     * B5:516*729
     * Folio:612*936
     * Quarto:610*780
     * 宽和高乘以20 
     * eg: A4 595*20=11900 842*20=16840
     * 当宽小于长为纵向,否则为横向
     */

​        CTSectPr sectPr = doc.getDocument().getBody().addNewSectPr();
        CTPageSz pgsz = sectPr.isSetPgSz() ? sectPr.getPgSz() : sectPr.addNewPgSz();
        pgsz.setW(new BigInteger(11900) );
        pgsz.setH(new BigInteger(16840));
        pgsz.setOrient(STPageOrientation.PORTRAIT);

3.2设置样式

//获取段落
List<XWPFParagraph> paragraphs = doc.getParagraphs();
XWPFParagraph ph=paragraphs.get(0);
//设置行间距
ph.setSpacingBetween(1.15D)
//设置首行缩进
ph.setIndentationFirstLine(500)
//设置对齐方式
ph.setAlignment(ParagraphAlignment.LEFT)
List<XWPFRun> runs = ph.getRuns();
XWPFRun run = runs.get(0);
//设置字体大小
run.setFontSize(15);
 CTRPr rp;
if(run.getCTR().isSetRPr()){
rp= run.getCTR().getRPr();
}else{
rp= run.getCTR().addNewRPr()
}
 CTFonts fonts;
if(rp.isSetRFonts()){
fonts=rp.getRFonts();
}else{
fonts= rp.addNewRFonts();
}
//设置颜色
rp.setColor("");
//改变数字或者英文字体
fonts.setAscii("Arial");
//改变中文字体
fonts.setEastAsia("新宋体");
fonts.setHAnsi("仿宋");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值