请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

LilaS
金牌服务用户   /  发表于:2025-3-12 17:27  /   查看:88  /  回复:8
100金币
sjs富文本格式结构是这样的:
{"converted":[{"style":{"foreColor":"#000000","font":"9pt'Times New Roman'"},"text":"DCU0.3% "},{"style":{"foreColor":"#000000","font":"italic9pt 'Times NewRoman'"},"text":"k"},{"style":{"foreColor":"#000000","font":"9pt'Times New Roman'"},"text":"=2)、ACU0.3%"},{"style":{"foreColor":"#000000","font":"italic9pt 'Times NewRoman'"},"text":"k"},{"style":{"foreColor":"#000000","font":"9pt'Times New Roman'"},"text":"=2"}],"text":"DCU0.3% k=2)、ACU0.3%k=2","richText":[{"style":{"foreColor":"#000000","font":"9pt'Times New Roman'"},"text":"DCU0.3% "},{"style":{"foreColor":"#000000","font":"italic9pt 'Times NewRoman'"},"text":"k"},{"style":{"foreColor":"#000000","font":"9pt'Times New Roman'"},"text":"=2)、ACU0.3%"},{"style":{"foreColor":"#000000","font":"italic9pt 'Times NewRoman'"},"text":"k"},{"style":{"foreColor":"#000000","font":"9pt'Times New Roman'"},"text":"=2"}]}



我想要实现sjs上一个带格式的数据 用poi 渲染到word里 有啥简单的方式吗

最佳答案

查看完整内容

SpreadJS富文本对字符串中呈现不同样式效果的字符串分别设置了Style样式, 如此来增强单元格对文本多元化样式的支持,如下图所示在单元格中设置了富文本: 再看json中富文本的数据结构,如下图所示: Microsoft Word作为文档编辑工具,本身支持对连续文本中的各段设置不同字体和显示样式。如果您使用的文件类型是ssjson,从中先获取富文本对应的json数据内容,然后分门别类地识别其中的各段text和style,之后通过poi写 ...

8 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2025-3-12 17:27:14
来自 4#
LilaS 发表于 2025-3-12 18:06
sjs上的富文本数据 渲染到word上输出

SpreadJS富文本对字符串中呈现不同样式效果的字符串分别设置了Style样式, 如此来增强单元格对文本多元化样式的支持,如下图所示在单元格中设置了富文本:
1741829469353.png204567870.png

再看json中富文本的数据结构,如下图所示:
1741829546427.png418864440.png

Microsoft Word作为文档编辑工具,本身支持对连续文本中的各段设置不同字体和显示样式。如果您使用的文件类型是ssjson,从中先获取富文本对应的json数据内容,然后分门别类地识别其中的各段text和style,之后通过poi写入富文本内容时,对每段文本设置相应的字体和显示样式即可。

但是呢,通过json字符串识别富文本各段字符串的字体和显示样式有一定风险,因为SpreadJS版本迭代过程中伴随着老问题修复和功能增强,文件json数据结构便有可能发生变化,所以,在升级版本后还需要重新测试这部分功能,确保业务代码与SpreadJS序列化json数据结构的兼容性。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-3-12 18:02:34
2#
您好!请问下您想要实现的需求是什么?
回复 使用道具 举报
LilaS
金牌服务用户   /  发表于:2025-3-12 18:06:57
3#
Wilson.Zhang 发表于 2025-3-12 18:02
您好!请问下您想要实现的需求是什么?

sjs上的富文本数据 渲染到word上输出
回复 使用道具 举报
LilaS
金牌服务用户   /  发表于:2025-3-13 09:59:18
5#
Wilson.Zhang 发表于 2025-3-13 09:54
SpreadJS富文本对字符串中呈现不同样式效果的字符串分别设置了Style样式, 如此来增强单元格对文本多元化 ...

明白了 感谢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-3-13 11:07:30
6#

不客气。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-3-13 15:59:10
7#
本帖最后由 Wilson.Zhang 于 2025-3-13 16:06 编辑

您好!我理解您当前是要以sheet对应json数据中保存的富文本信息为依据写Word文件,正如之前告诉您的那样,版本更新过程中可能会改动json数据结构,如果您升级版本后不知道json数据是否有变化,可能会导致这部分业务服务不稳定。

考虑到这一点,我想到如果后端可以获取到关于富文本的结构化数据,即类对象,这样比json数据更可靠。于是我翻阅了GcExcel的API文档,了解到GcExcel的富文本数据类型为IRichText,富文本中每一段文本对应为ITextRun对象,而字体和显示样式都作为对象属性存在于ITextRun内部。

如下图所示,D7单元格中的富文本内容为“SpreadJS功能强”,包括两段文本“SpreadJS”和“ 功能强”:
1741852924399.png407776488.png

在GcExcel中使用如下图所示的代码片段即可获取富文本中各段文本的字体和样式:
1741853005905.png785280456.png

附上demo,供您参考了解:

GcExcel解析富文本.zip

11.02 KB, 下载次数: 3

回复 使用道具 举报
LilaS
金牌服务用户   /  发表于:2025-3-13 16:24:40
8#
Wilson.Zhang 发表于 2025-3-13 15:59
您好!我理解您当前是要以sheet对应json数据中保存的富文本信息为依据写Word文件,正如之前告诉您的那样, ...

好 感谢大佬
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2025-3-13 16:55:03
9#

不客气。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部