easypoi导出word换行处理

2023-11-06

内容包含换行符\n,导出word时换行符失效,会将换行符\n识别为空格。
模板
模板
导出结果
在这里插入图片描述
maven

<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-base</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-web</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-annotation</artifactId>
    <version>4.1.2</version>
</dependency>
//数据处理
List<Map<String, Object>> listMap = new ArrayList<>();
Map<String, Object> lm = new HashMap<>();
lm.put("id", 1);
lm.put("name", "维生素D3滴剂");
lm.put("num", 1);
lm.put("yfyl", "每天晚上1滴,随餐服用");
lm.put("yfyl", "维生素 D3 25微克(对应1000iu)");
List<String> gxjsList = Arrays.asList("用于维护骨骼", "支持钙的吸收的利用,维持血液中正常的钙水平", "支持免疫功能");
lm.put("gxjs", StringUtils.join(gxjsList, "\n"));
listMap.add(lm);
Map<String, Object> form = new HashMap<>();
form.put("mapList", listMap);

//easypoi导出word
ClassPathResource classPathResource = new ClassPathResource("templates/prescription_template.docx");
InputStream inputStream = classPathResource.getInputStream();
MyXWPFDocument document = new MyXWPFDocument(inputStream);

WordExportUtil.exportWord07(document, form);
for (XWPFTable table : doc.getTables()) {//表格
    for (XWPFTableRow row : table.getRows()) {//行
        for (XWPFTableCell cell : row.getTableCells()) {
            PdfUtil.addBreakInCell(cell);
        }
    }
}
import org.apache.poi.xwpf.usermodel.*;
public class PdfUtil {
	/**
     * 替换word换行符为中断
     *
     * @param cell
     */
    private static void addBreakInCell(XWPFTableCell cell) {
    	//判断是否包含\n替换为中断
        if (cell.getText() != null && cell.getText().contains("\n")) {
            for (XWPFParagraph p : cell.getParagraphs()) {
                for (XWPFRun run : p.getRuns()) {
                    if (run.getText(0) != null && run.getText(0).contains("\n")) {
                        String[] lines = run.getText(0).split("\n");
                        if (lines.length > 0) {
                            run.setText(lines[0], 0);
                            for (int i = 1; i < lines.length; i++) {
                               //中断
                                run.addBreak(BreakType.TEXT_WRAPPING);
//				                    run.addCarriageReturn();//回车符
                                run.setText(lines[i]);
                            }
                        }
                    }
                }
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

easypoi导出word换行处理 的相关文章

  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • JavaFX 图像未在舞台中显示

    我尝试了很多次 尝试了很多方法 但都无法让自己的形象在舞台上如我所愿 我认为这可能与java寻找资源的路径有关 但我不确定 因为我刚刚开始使用视觉库 在本例中为JavaFX 这是我的目录结构 MyProject assets img myI
  • 防止 Spring Boot 注册 Spring Security 过滤器之一

    我想禁用安全链中的 Spring Security 过滤器之一 我已经看到了防止 Spring Boot 注册 servlet 过滤器 https stackoverflow com questions 28421966 prevent s
  • 使用 Java 在 WebDriver 中按 Ctrl+F5 刷新浏览器

    我已经使用 java 刷新了 WebDriver 中的浏览器 代码如下 driver navigate refresh 如何使用 Java 在 WebDriver 中按 Ctrl F5 来做到这一点 我认为您可以使用 WebDriver 和
  • URL.setURLStreamHandlerFactory

    我正在使用带有嵌入式 Jetty 的可执行 jar 开发一个 Web 应用程序 我的jar包含一个依赖jar jar in jar 我参考了JarRsrcLoader and RsrcURLStreamHandlerFactory由 Ecl
  • 如何开始使用 Chainsaw for Log4j?

    我想开始使用 Chainsaw v2 几乎没有关于它的信息 我只找到了this http www velocityreviews com forums t140105 help using chainsaw for log4j html 但
  • RMI 中的引用传递问题? [复制]

    这个问题在这里已经有答案了 有人可以告诉我我错在哪里 为什么这个 RMI 聊天应用程序不起作用 目标是通过远程对象或序列化对象实现客户端 服务器和逻辑之间的解耦 import javax swing import java awt even
  • 尝试使用 JRI 将 R 与我的 Java 应用程序集成,但出现错误。谁能解释一下原因和解决办法吗?

    我需要将 Java 与 R 集成来运行一些数学命令并使用 R 的功能进行绘图 以下部分代码给出了错误 public static void main String args HelloRWorld r new HelloRWorld r h
  • java.lang.LinkageError:尝试重复的类定义

    为什么会发生错误以及如何修复它 02 13 02 pool 4 thread 2 WARN Exception in thread pool 4 thread 2 02 13 02 pool 4 thread 2 WARN java lan
  • 如何拦截 REST 端点以接收所有标头?

    我当前的代码是 Path login RequestScoped public class LoginResource GET SecurityChecked public Response getUser HeaderParam AUTH
  • 定期更新 SWT 会导致 GUI 冻结

    Problem 当 GUI 字段定期更新时 SWT 会冻结 我想要一个基于 SWT 的 GUI 其中文本字段的值会定期递增 最初我从单独的线程访问 textField 导致抛出异常 线程 Thread 0 org eclipse swt S
  • Jenkins 的代码覆盖率 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何将 Observable>> 转换为 Observable>

    我陷入了如何将以下可观察类型转换 转换为我的目标类型的困境 我有以下类型的可观察值 Observable
  • 带有 OpenId 提供程序的 Java Spring 安全性

    我有一个 spring MVC 应用程序 另一个客户端应用程序想要使用 open id connect 访问我的 spring 应用程序 如何在服务器端实现开放ID提供商 请帮忙 MITREid 连接 OpenID Connect Java
  • 如何找到被点击的JLabel并从中显示ImageIcon?

    这是我的代码 我想知道哪个l单击 然后在新框架中显示该 ImageIcon e getSource 不起作用 final JFrame shirts new JFrame T shirts JPanel panel new JPanel n
  • 改变for循环的顺序?

    我遇到一种情况 我需要根据用户输入以不同的顺序循环遍历 xyz 坐标 所以我是 3D 空间中的一个区域 然后是一组像这样的 for 循环 for int x 0 x lt build getWidth x for int y 0 y lt
  • 如何在Java媒体框架中学习.wav持续时间?

    我正在尝试使用 java 媒体框架将 mov 文件与 wav 文件合并 因此我需要知道它们的持续时间 我怎样才能做到这一点 任何想法 将不胜感激 您可以使用以下方式了解声音文件的持续时间 即 VitalyVal 的第二种方式 import
  • JavaFX - 为什么多次将节点添加到窗格或不同的窗格会导致错误?

    我现在正在学习基本的 JavaFX 我不明白我正在阅读的书中的这一说法 不 诸如文本字段之类的节点只能添加到一个窗格中一次 将节点添加到多次窗格或不同的窗格将导致运行时错误 我可以从书中提供的UML图看出它是一个组合 但我不明白为什么 库类
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 失败时石英重试

    假设我有一个这样配置的触发器

随机推荐

  • SAP 资产屏幕增强(AS01/AS02/AS03)

    导语 最新需要在资产屏幕上增加增强字段 效果图在最后 下面分享一下实现过程 一 在表中增强字段 本次增强的是 资产主数据 gt 源 中的字段 选择储存在ANLU表中 二 创建屏幕 在函数组XAIS中创建屏幕9001 在屏幕上绘制需要增强的字
  • webpack性能优化

    webpack性能优化 性能优化介绍 开发环境性能优化 生产环境性能优化 开发环境性能优化 HMR hot module replacement 开发环境下调试代码 source map oneOf 缓存 tree shaking 去除无用
  • 计算m个A,n个B可以组合成多少个不同排列的问题。---C语言

    计算m个A n个B可以组合成多少个不同排列的问题 例如计算3个A 2个B可以组成多少种排列 如 AAABB AABBA 根据题目 我们要计算出其排列组合的个数 需要先把组合中的各个字母拿出来 并且计算有多少个 然后根据个数 计算其排列组合的
  • 关于jqGrid的multiselect,multiboxonly,multikey

    今天又解决了个大难题 不知道用jqGrid的朋友遇到过没有 当我们设置multiselect为true时 选择任何的单元格 都会选中该行 万一设置了单元格编辑功能 岂不是每次都要取消选中的行 由于查看国内的网站 发现仅仅都是介绍了jqGri
  • ChatGPT的 6 个强势升级:重点是超强的文件上传和分析功能也来啦!

    发布会核心概览 前日凌晨 OpenAI在社交平台上宣布了一系列新功能 旨在提升用户体验 这6 个新功能包括 提示示例 回答建议 GPT 4默认选择 可分析上传多个文件 保持登录状态和键盘快捷键 其中 可分析上传多个文件的功能非常强大 结合最
  • Leecode392.判断子序列

    题目描述 给定字符串 s 和 t 判断 s 是否为 t 的子序列 字符串的一个子序列是原始字符串删除一些 也可以不删除 字符而不改变剩余字符相对位置形成的新字符串 例如 ace 是 abcde 的一个子序列 而 aec 不是 进阶 如果有大
  • MicroPython——将固件烧写到STM32开发板上

    博主是在 win10环境下 将MicroPython固件烧录到stm32F407开发板上 因为博主想学一波STM32F407 有python基础 但c语言基础一般 觉得学库函数觉得太过复杂 且以后方向可能不太搞嵌入式硬件 所以就用Mirco
  • Eclipse 快捷健

    查询 F3 全局 打开声明 Ctrl G 工作区中的声明 Ctrl shift G 查看变量或方法在工作区的引用 Ctrl Alt H Call Hierarchy 查找出该工程所有调用了该成员变量或方法 Ctrl H 打开搜索对话框 Ct
  • PyQt5 界面预览工具

    简介 一款为了预览PyQt5设计的UI界面而开发的工具 使用时需要结合PyCharm同时使用 下载 PyQt5界面预览工具 参数说明 使用配置 启动PyCharm 找到File gt Settings 打开 找到Tools gt Exter
  • [Java基础]Java中boolean类型到底占用多少个字节?

    1 时间 2017 07 03 07 37 06 YuanMxy 2 问题描述 今天在复习java基础的时候发现一小问题 Java中boolean类型到底占用多少个字节 3 问题解答 1 什么是boolean类型 根据官方文档的描述 htt
  • 在aps.net开发时,改变页面对应的js代码后,重新加载页面后js代码没有加载为最新版本?

    例如页面引用js文件的代码为 在开发人员修改完js代码后 发现重新加载页面时新的js代码不会生效 这是因为页面在向js发出请求时 浏览器发现js文件名和参数没有变化 所以默认 加载了缓存中存在的js代码 可以这样解决这个问题 将页面引用js
  • idea重写接口没有@override_乐字节Java继承|方法重写、super和final关键字

    大家好 乐字节的小乐又来了 上一篇是 乐字节Java JavaBean 继承与权限修饰 也是属于Java继承的 今天继续Java继承 一 方法的重写 父类不满足子类的要求 按需改写 注意 方法签名必须相同 在子类中可以根据需要对从基类中继承
  • 如何进行云主机迁移?看这一篇文章就够了!

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯云计算产品团队发表于云 社区专栏 主机迁移概述 在云计算时代 不管是从IDC上云还是多云直接的迁移 都已经是常见的事宜 而在上云 迁移的方案中 也是有多种的方式能够将主机迁
  • 【颜纠日记】win10开启高性能超频模式,你不知道的N种方法。

    颜纠日记 1 启用游戏模式 Win10 中调整游戏性能最简单的方法 就是启用游戏模式 开启游戏模式 可以通过停止 Windows 更新和一些应用程序的后台活动 来提高游戏帧数 如果不确定是否开启了游戏模式 可以转到 Win I 游戏 游戏模
  • 3D游戏(2)——离散仿真引擎基础

    文章目录 1 简答题 解释 游戏对象 GameObjects 和 资源 Assets 的区别与联系 下载几个游戏案例 分别总结资源 对象组织的结构 指资源的目录组织结构与游戏对象树的层次结构 编写一个代码 使用 debug 语句来验证 Mo
  • Android:WebView加载url网页显示不完整解决办法

    WebView基本用法 如果想要在APP里面加载url网页 或者html代码 首先我们会想到WebView 它的基本用法如下 webview layout xml
  • 基于redis实现延时队列(一)

    背景 最近项目中需要对一条数据 在半小时候更改其状态 类似于提交商城订单半小时后未支付的订单需要更改为超时状态 当然这个解决方案有很多 最好的解决方案是用MQ的死信队列 但由于项目中没有引入MQ 故本文采用的是基于redis与定时器实现该需
  • docker error creating overlay mount to invalid argument 解决方法

    问题原因 由于docker的不同版本在centos上产生的mount问题 1 2 x没有出现这个问题 当使用yum install时 安装的最新版本 1 3 x 会导致overlay2的错误 核心解决方案 etc sysconfig doc
  • Spring Security Oauth2 认证(获取token/刷新token)流程(password模式)

    https blog csdn net bluuusea article details 80284458 1 本文介绍的认证流程范围 本文主要对从用户发起获取token的请求 oauth token 到请求结束返回token中间经过的几个
  • easypoi导出word换行处理

    内容包含换行符 n 导出word时换行符失效 会将换行符 n识别为空格 模板 导出结果 maven