找回密码
 立即注册

QQ登录

只需一步,快速开始

zhvczw

中级会员

65

主题

193

帖子

612

积分

中级会员

积分
612
zhvczw
中级会员   /  发表于:2022-12-30 15:01  /   查看:2833  /  回复:7
本帖最后由 Lynn.Dou 于 2023-1-11 17:20 编辑

如图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-12-30 17:53:32
沙发
您好,您可以升级到V5.2.5版本测试一下,我这边用V5.2.5版本模拟您的数值进行导出HTML,结果是符合期望的。
原始Excel设置:

导出HTML:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhvczw
中级会员   /  发表于:2023-1-3 11:15:58
板凳
Clark.Pan 发表于 2022-12-30 17:53
您好,您可以升级到V5.2.5版本测试一下,我这边用V5.2.5版本模拟您的数值进行导出HTML,结果是符合期望的。 ...

GcExcel版本是5.2.5,又试了试还不行。我上传了原始json,麻烦看看。位置:输出页sheet【P6】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhvczw
中级会员   /  发表于:2023-1-3 11:30:21
地板
zhvczw 发表于 2023-1-3 11:15
GcExcel版本是5.2.5,又试了试还不行。我上传了原始json,麻烦看看。位置:输出页sheet【P6】

导出html的代码部分,导出第一个sheet页
  1. public static String gcExcelToHtml(String wJson)  {
  2.         Workbook workbook = new Workbook();
  3.         HtmlSaveOptions options = new HtmlSaveOptions();
  4.         options.setExportSheetName(workbook.getWorksheets().get(0).getName());
  5.         options.setExportImageAsBase64(true);
  6.         options.setExportCssSeparately(false);
  7.         options.setExportSingleTab(false);
  8.         options.setExportGridlines(false);
  9.         String result = "";
  10.         try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
  11.             IWorksheet worksheet = workbook.getWorksheets().get(0);
  12.             worksheet.fromJson(wJson);
  13.             workbook.save(bos, options);
  14.             result = new String(bos.toByteArray());
  15.         } catch (Exception e) {
  16.             e.printStackTrace();
  17.         }
  18.         return result;
  19.     }
复制代码
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-3 17:32:30
5#
本帖最后由 Lynn.Dou 于 2023-1-11 17:20 编辑
zhvczw 发表于 2023-1-3 11:30
导出html的代码部分,导出第一个sheet页

问题已复现,已将此问题记录下来进一步调研原因,待有结果会在贴中回复您。
本贴先做保留处理。(DOCXLS-7349)
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-11 17:19:55
6#
更新进展:
原因是单元格的值实质上为字符串,如下图:

在SpreadJS,对于字符串类型的数字,也是支持设置数字格式的,即您文件中所设置的那样。
您如果在SpreadJS中直接导出xlsx文件,用微软Excel打开会发现显示的仍是原字符串值,即保留四位小数的。

GcExcel遵循与Excel一致的策略,对于字符串类型值导出pdf/html时会按照原字符串值进行显示,这也是为什么您问题中二者不一致的原因。
解决方案:
在设计表单时,避免使用字符串值,而是将单元格value设置为数字,这样二者就一致了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
zhvczw
中级会员   /  发表于:2023-1-12 17:08:07
7#
本帖最后由 zhvczw 于 2023-1-12 17:20 编辑
Lynn.Dou 发表于 2023-1-11 17:19
更新进展:
原因是单元格的值实质上为字符串,如下图:

感谢官方的解答。
该单元格的服务端存储被设计成了字符串类型,有没有在不改变数据类型的情况下实现html导出也能按spreadjs显示的预期样式导出的方法?如果服务端改数据类型,工作量会很大。

后续版本能否增加相关参数让用户自行设置是按单元格的value导出还是按text导出?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-12 17:42:09
8#
zhvczw 发表于 2023-1-12 17:08
感谢官方的解答。
该单元格的服务端存储被设计成了字符串类型,有没有在不改变数据类型的情况下实现html ...

目前GcExcel的设计是与Excel一致的,这一点前面回复中也已截图说明,所以需要您修改数据类型为number类型来解决此问题。
”SpreadJS字符串类型值也可以设置数字格式“,这一点其实是SpreadJS较于Excel的升级功能,但是从本贴问题来看,对于设计表单的操作者来说留下了后面的隐患。
所以,这边会结合本贴问题背景,向研发团队反馈相应的需求,看能否增加一个接口,让用户去选择是否去使用此“升级功能”,以避免出现类似的问题。
现将此贴移动至产品需求板块了,如果后续有相关计划,会在贴中同步您。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部