您好,我们调研了一下您提供的Excel文件,发现相关的单元格的XML信息如下图所示:
其s(style,样式)的对象为“28”:
您会发现“28”样式中的数字格式为“8”,但是在数字格式的定义中却并不包含“8”(numFmtId):
在中文版和英文版的Excel中,“8”不是一个内置的数字格式,这就是为什么加载时格式出现了丢失。
如果直接在Excel点击Enable Editing按钮,Excel将会自动修正这个问题,并创建正确的数字格式,此时再导入这个Excel文件,将会得到预期中的结果。
——————————————————————————————————————
要解决这个问题,需要您针对“8”数字格式做特殊处理,SpreadJS针对其他文化中的内置数字格式的情况留了后备接口,您可以参考以下代码来实现:
- var culture = GC.Spread.Common.CultureManager.getCultureInfo("zh-cn");
- culture.LocalNumberFormat = {
- 8: "$#,##0.00_);[Red]($#,##0.00)"
- }
- GC.Spread.Common.CultureManager.addCultureInfo("my-special-zh-cn", culture);
- GC.Spread.Common.CultureManager.culture("my-special-zh-cn");
- var designer = new GC.Spread.Sheets.Designer.Designer('dss');
- var spread = designer.getWorkbook();
复制代码 |