找回密码
 立即注册

QQ登录

只需一步,快速开始

BND

高级会员

170

主题

526

帖子

1826

积分

高级会员

积分
1826
BND
高级会员   /  发表于:2024-4-20 10:41  /   查看:7149  /  回复:21
本帖最后由 Richard.Huang 于 2024-5-29 15:19 编辑

产品:GcExcel
版本:V7.1.0
调研编号:DOCXLS-10234
LastReview:2024/05/29
该问题已经在V7.1.2中得到修复,可以通过升级版本来解决该问题

https://gcdn.grapecity.com.cn/showtopic-216998-1-1.html
之前反馈这个问题处理新增的模板是可以解决,那些历史保存的sjs文件样式还有有问题
麻烦分析下这些sjs有什么问题

Gc处理样式异常.sjs

7.4 KB, 下载次数: 2325

评分

参与人数 1金币 +500 收起 理由
Ellia.Duan + 500

查看全部评分

21 个回复

倒序浏览
BND
高级会员   /  发表于:2024-4-20 10:45:15
沙发
SjsOpenOptions options = new SjsOpenOptions();
options.setIncludeFormulas(true);
options.setIncludeStyles(true);
workbook.open(sjsFileInputStream, options);
workbook.setName(uniqueId);
workbook.setCulture(Locale.CHINESE);
String ssjson = workbook.toJson();
upload ssjson...
download  ssjson...

按照这个精简版流程依然可以复现
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 11:29:16
板凳
您好,请问以上问题也是在linux机器上可以复现,在windows上无法复现?
回复 使用道具 举报
BND
高级会员   /  发表于:2024-4-22 14:45:08
地板
本帖最后由 BND 于 2024-4-22 15:06 编辑
Ellia.Duan 发表于 2024-4-22 11:29
您好,请问以上问题也是在linux机器上可以复现,在windows上无法复现?

是的 只在linux环境复现了
workbook.setCulture(Locale.CHINESE);
在GC7.1.0版本按照之前给的方法测试这行去掉重新执行测试
发现生成的ssjson放到SpreadJS样式正常了
但是引来了额外的问题:
都是相同的workbook对象的情况下,
workbook导出excel文件样式依然含有$符号

回复 使用道具 举报
BND
高级会员   /  发表于:2024-4-22 14:55:20
5#
本帖最后由 BND 于 2024-4-22 15:13 编辑

设置中文Culture结果.ssjson (61.4 KB, 下载次数: 2004)
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 15:14:26
6#
本帖最后由 Ellia.Duan 于 2024-4-22 15:16 编辑

您好,在SpreadJS中导入这个文件”默认未设置Culture结果.ssjson“观察到行次列 没有显示$符号,这一步与您预期一致。
但是当我导出未Excel时,发现行次列 仍然没有显示$符号,与您结果不一致。
如下动图所示:
未设置cuture.gif



希望您提供下您出现问题Ms Excel的版本,以及是否是英文版本。
回复 使用道具 举报
BND
高级会员   /  发表于:2024-4-22 15:30:20
7#
本帖最后由 BND 于 2024-4-22 15:33 编辑
Ellia.Duan 发表于 2024-4-22 15:14
您好,在SpreadJS中导入这个文件”默认未设置Culture结果.ssjson“观察到行次列 没有显示$符号,这一步与您 ...

你好,上面描述的导出的excel表格存在"$"符号是指:
在java中生成完ssjson后,
继续执行: 使用同一workbook生成excel文件
对应代码为:
OutputStream os = new ByteArrayOutputStream();
workbook.save(os);

结果发现生成的文件中含有 "$"符号,与同一对象workbook生成的ssjson对象格式不符

无论使用wps还是ms打开都是一样的
对应文件导出如下:
默认未设置Culture结果生成文件.xlsx (11.84 KB, 下载次数: 3)
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-22 16:27:05
8#
问题收到,我将深入调研下此问题
DOCXLS-10234
回复 使用道具 举报
BND
高级会员   /  发表于:2024-4-24 10:38:49
9#
Ellia.Duan 发表于 2024-4-22 16:27
问题收到,我将深入调研下此问题
DOCXLS-10234

请问有进展了吗
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-24 13:33:21
10#
您好,经过调研,这种奇怪的行为是由不正确的用 Workbook.setCulture 法引起的。
  • 如果要使用中国文化,则区域设置必须为 Locale.CHINA,而不是Locale.CHINESE
  • 该 Workbook.Culture 属性仅为 init。它必须在工作簿实例的初始化代码中设置。

下面是更新的代码:
  1. Workbook workbook = new Workbook();
  2. // 1. Culture is init-only
  3. // 2. Use Locale.CHINA for Simplified Chinese
  4. workbook.setCulture(Locale.CHINA);
  5. SjsOpenOptions options = new SjsOpenOptions();
  6. options.setIncludeFormulas(true);
  7. options.setIncludeStyles(true);
  8. workbook.open("The path to input.sjs", options);
  9. // 3. Avoid memory leak
  10. try (FileOutputStream fs = new FileOutputStream("The path to output.ssjson")) {
  11.     workbook.toJson(fs);
  12. }
复制代码


回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部