王祖贤-本人 发表于 2023-4-24 11:02:48

扩表格粘贴日期2006/12/12,日期错误显示为2006/12/1

本帖最后由 Lynn.Dou 于 2023-12-13 14:43 编辑

问题编号:SJS-18039
LastReview:2023/12/13
此问题属于产品设计,提供了解决方案


输入日期格式 2006年12月12日,单元格显示 2006年12月,将当前单元格复制到其他表格内,显示的是2006年12月-2006/12/1


王祖贤-本人 发表于 2023-4-24 17:13:36

"@grapecity/spread-excelio": "^16.0.5",
    "@grapecity/spread-sheets": "^16.0.5",
    "@grapecity/spread-sheets-barcode": "^16.0.5",
    "@grapecity/spread-sheets-charts": "^16.0.5",
    "@grapecity/spread-sheets-designer": "^16.0.5",
    "@grapecity/spread-sheets-languagepackages": "^16.0.5",
    "@grapecity/spread-sheets-pdf": "^16.0.5",
    "@grapecity/spread-sheets-print": "^16.0.5",
    "@grapecity/spread-sheets-resources-zh": "^16.0.5",
    "@grapecity/spread-sheets-shapes": "^16.0.5",

Lynn.Dou 发表于 2023-4-24 17:50:58

您好,
问题已复现,已将此问题记录下来进一步调研原因,待有进展贴中通知您。
本贴先做保留处理。

Lynn.Dou 发表于 2023-12-13 14:42:37

更新进展:
经调研,该问题涉及的情况比较复杂,详情如下:

情况1:在designer中B2单元格输入 “2006年12月12日”,此时单元格显示为“2006年12月”,而不是“2006年12月12日”,与Excel不一致。
这与SpreadJS自动格式化策略有关,它不像Excel那么智能,目前的格式化策略会表现为“yyyy年M月”形式。
如果想与Excel表现一致,您可以使用以下代码:
GC.Spread.Common.CultureManager.culture("zh-cn");
GC.Spread.Common.CultureManager.getCultureInfo().DateTimeFormat.preselectedFormatters = ['yyyy年M月d日'];

情况2:选择B2单元格,按下ctrl+c复制,然后打开新的designer,按下ctrl+v粘贴至C2单元格。


“选择B2单元格,按下ctrl+c复制”
此时带有单元格样式(此处单元格样式中没有格式化程序)的RTF内容 “2006年12月12日” 将被复制到系统剪贴板中
“打开新的designer,按下ctrl+v粘贴至C2单元格”
在将 RTF 内容粘贴到单元格中时,它会先将“2006年12月12日”解析为日期,然后将该日期应用于 C2 值。之后将 HTML 样式解析为 SpreadJS样式,然后将该样式应用到 C2 样式。由于HTML样式不包含任何格式化程序,因此,自动格式化程序在这里不会生效,单元格值将显示“2006/12/12”


所以如果想保持文本的一致,可以设置以下代码:
spread.options.allowCopyPasteExcelStyle = false综上,此问题属于产品设计,您可以参考上述方案实现您的需求。
页: [1]
查看完整版本: 扩表格粘贴日期2006/12/12,日期错误显示为2006/12/1