扩表格粘贴日期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
"@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", 您好,
问题已复现,已将此问题记录下来进一步调研原因,待有进展贴中通知您。
本贴先做保留处理。 更新进展:
经调研,该问题涉及的情况比较复杂,详情如下:
情况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]