【java】poi 设置允许西文在单词中间换行

简介: 【java】poi 设置允许西文在单词中间换行

poi 设置允许西文在单词中间换行

6666.jpeg

一、问题描述

poi 设置允许西文在单词中间换行?


        // 创建一个新的文档
        XWPFDocument document = new XWPFDocument();

        // 创建段落
        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setSpacingBetween(1.5);
        firstParagraph.setStyle("1111");
        firstParagraph.setVerticalAlignment(TextAlignment.AUTO);
        // 创建文本
        XWPFRun run3 = firstParagraph.createRun();
        run3.setText("        " + "②网上办:");
        run3.setFontFamily("微软雅黑");
        run3.setFontSize(16);

        run3 = firstParagraph.createRun();
        run3.setText("测试测试测试测:https://aaaa.aa.aaa.aa/aaaaaaaaa/item/toDetails/7eecb643-c88b-433e-942e-7c14ae6cd7cc");
        run3.setFontSize(16);
        run3.setFontFamily("宋体");
        try {
   
   
            // 将文档保存到文件
            FileOutputStream out = new FileOutputStream("D:\\example.docx");
            document.write(out);
            out.close();
            System.out.println("文档创建成功!");
        } catch (IOException e) {
   
   
            System.out.println("创建文档时出现错误:" + e.getMessage());
        }

    }

image.png

二、解决问题

问题解决方案:

依赖:

<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.2</version>
            <scope>compile</scope>
 </dependency>
 <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-full</artifactId>
            <version>5.2.2</version>
 </dependency>

三、解决代码


import org.apache.poi.xwpf.usermodel.TextAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff1;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr;

import java.io.FileOutputStream;
import java.io.IOException;


/**
 * @author caozhen
 * @ClassName FF
 * @description: TODO
 * @date 2023年10月10日
 * @version: 1.0
 */
public class FF {
   
   

    public static void main(String[] args) {
   
   

        // 创建一个新的文档
        XWPFDocument document = new XWPFDocument();

        // 创建段落
        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setSpacingBetween(1.5);
        firstParagraph.setStyle("1111");
        firstParagraph.setVerticalAlignment(TextAlignment.AUTO);
        // 设置允许在单词中间换行
        setParagraphWrap(firstParagraph, true);
        // 创建文本
        XWPFRun run3 = firstParagraph.createRun();
        run3.setText("        " + "②网上办:");
        run3.setFontFamily("微软雅黑");
        run3.setFontSize(16);

        run3 = firstParagraph.createRun();
        run3.setText("测试测试测试测:https://aaaa.aa.aaa.aa/aaaaaaaaa/item/toDetails/7eecb643-c88b-433e-942e-7c14ae6cd7cc");
        run3.setFontSize(16);
        run3.setFontFamily("宋体");
        // 允许在单词中间换行
        run3.addCarriageReturn();
        try {
   
   
            // 将文档保存到文件
            FileOutputStream out = new FileOutputStream("D:\\example.docx");
            document.write(out);
            out.close();
            System.out.println("文档创建成功!");
        } catch (IOException e) {
   
   
            System.out.println("创建文档时出现错误:" + e.getMessage());
        }

    }

    /**
     * 段落设置-中文板式 : 允许西文在单词中间换行
     */
    public static void setParagraphWrap(XWPFParagraph paragraph, boolean allow) {
   
   
        //解释:   允许后(勾选) word展示效果
        //          |         这是一个段落,   |       |带来了珍贵的礼物——      |
        //          |paragraph               |       | 五彩缤纷的落叶。       |

        //         不允许(取消勾选) word展示效果
        //          |         这是一个段落,par|       |带来了珍贵的礼物——五彩缤 |
        //          |agraph                  |       |纷的落叶。              |

        CTP ctp = paragraph.getCTP();
        CTPPr ctpPr = ctp.isSetPPr() ? ctp.getPPr() : ctp.addNewPPr();
        CTOnOff ctOnOff = ctpPr.isSetWordWrap() ? ctpPr.getWordWrap() : ctpPr.addNewWordWrap();
        if (allow) {
   
     //允许
            ctOnOff.setVal(STOnOff1.OFF);
        } else {
   
         //不允许
            ctpPr.unsetWordWrap();
        }
    }

image.png

相关文章
|
4月前
|
缓存 Java Spring
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
Java本地高性能缓存实践问题之Caffeine中设置刷新机制的问题如何解决
128 1
|
4月前
|
缓存 Java
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
Java本地高性能缓存实践问题之Caffeine缓存库中基于时间设置驱逐策略的问题如何解决
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
89 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
Java Linux iOS开发
如何设置 Java 的环境变量
设置Java环境变量是使用Java开发工具和运行Java程序的前提。主要步骤包括:安装JDK,配置系统环境变量中的JAVA_HOME、PATH和CLASSPATH,确保命令行可直接调用javac和java命令。
58 6
|
2月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
151 1
|
2月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
147 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
2月前
|
Java Apache
Apache POI java对excel表格进行操作(读、写) 有代码!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
54 0
|
3月前
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
1591 0
|
4月前
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
4月前
|
缓存 前端开发 Java
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
【Azure 应用服务】App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?
下一篇
DataWorks