找回密码
 立即注册

QQ登录

只需一步,快速开始

BND
金牌服务用户   /  发表于:2024-4-28 17:14  /   查看:651  /  回复:13
1金币
本帖最后由 Richard.Huang 于 2024-5-9 12:03 编辑

产品:GcExcel
版本:V7.1.0

具体打开SJS文件为:
Gc处理样式异常 (1).sjs (7.4 KB, 下载次数: 1)

13 个回复

倒序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 17:49:13
沙发
您好,我确认下您的问题:
spreadJS如果导出为1.sjs文件,通过GcExcel导入1.sjs文件,然后生成1.ssjson和1.xlsx文件。
如是在SpreadJS中导入1.ssjson,发现行次列是正确的。
但是在Ms Excel中打开1.xlsx ,发现行次列有$符号。

如果是这样子的话,我理解与
https://gcdn.grapecity.com.cn/forum.php?mod=redirect&goto=findpost&ptid=217612&pid=793540
此楼的描述内容是一致的。

解决方案是 还是需要设置文化 Locale.CHINA
  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. }
复制代码


如果按照上述代码设置了 Locale.CHINA,还是复现了您的问题, 我们再来调研这个问题。
回复 使用道具 举报
BND
金牌服务用户   /  发表于:2024-4-29 09:45:19
板凳
Ellia.Duan 发表于 2024-4-28 17:49
您好,我确认下您的问题:
spreadJS如果导出为1.sjs文件,通过GcExcel导入1.sjs文件,然后生成1.ssjson和1 ...

workbook.setCulture(Locale.CHINA);
经测试增加以上步骤设置文化后:
1:ssjson也出现了"$"符号
2:生成的Excel文件也还是存在"$"符号
生成后的ssjson和Excel文件如下参考:


ssjson:

4fd80a064f924c628b93afac8cd5de474448.txt (61.4 KB, 下载次数: 0)
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-29 10:03:08
地板
本帖最后由 Ellia.Duan 于 2024-4-29 13:51 编辑

收到,我将深入调研下此问题。DOCXLS-10234
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-4-29 17:59:27
5#
您好,使用下面的代码进行了测试

  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. }
复制代码
我们在docker 中创建一个 centos 7.9 jdk 8 环境,执行上述代码,此问题仍然无法重现。
我们需要排除其他代码的因素。您是否可以再整理下代码。
以及确认下SpreadJS是17.0.8版本,GcExcel是7.1.0版本。
以及清理下缓存。


DOCXLS-10234_docker.7z

65.08 KB, 下载次数: 14

回复 使用道具 举报
BND
金牌服务用户   /  发表于:7 天前
6#
Ellia.Duan 发表于 2024-4-29 17:59
您好,使用下面的代码进行了测试

我们在docker 中创建一个 centos 7.9 jdk 8 环境,执行上述代码,此问 ...


这边准备了一个复现demo

请下载解压缩后运行Test.java文件
观察项目根目录对应生成的excel样式与生成的ssjson文件到SpreadJS样式对比
gcTest.zip (43.9 KB, 下载次数: 1)
回复 使用道具 举报
BND
金牌服务用户   /  发表于:7 天前
7#
BND 发表于 2024-5-7 18:27
这边准备了一个复现demo

请下载解压缩后运行Test.java文件

此demo可在windows ide中复现描述问题以及为什么改了Culture导致ssjson样式也有问题,这些问题都是一起的
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:6 天前
8#
您好,在windows系统中,运行了您的项目。然后导入生成的两个文件,整个过程如下动图所示:
$.gif

如上动图所示,没有复现您的问题。

回复 使用道具 举报
BND
金牌服务用户   /  发表于:6 天前
9#
Ellia.Duan 发表于 2024-5-8 09:39
您好,在windows系统中,运行了您的项目。然后导入生成的两个文件,整个过程如下动图所示:

上述示例是使用GC6.2.4版本运行,尝试切换到7.1.0版本依然能复现这个问题
可参考这个示例demo:
gcTest.zip (16.01 KB, 下载次数: 13)
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:6 天前
10#
您好,通过您的代码,在MsExcel中打开您的Excel文件复现了您的问题,您确定文化是  
  1.   workbook.setCulture(Locale.US);
复制代码
之前一直沟通的是
  1. workbook.setCulture(Locale.CHINA)
复制代码
如果设置的是 Locale.CHINA ,此问题没有复现

您确定在US基础上调研此问题吗?如果是的话,我将继续为您调研。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部