founderedu1 发表于 2015-6-26 14:23:00

WPF版本的科学计数法导致数据不准

做财务数据统计,当数据太长时直接就变成了科学计数法,因财务最小单位是元,甚至到分,科学计数法直接就让数据变的不准了。
另为,财务系统需要千分位,现在就不成了,有没有解决办法。
格式设置为:
#,##0_
但当数字超过13位就会变成科学计数法。

怎么解决?

iceman 发表于 2015-6-26 16:18:00

回复 1楼founderedu1的帖子

你好,
我理解你的意思是不希望在数字过程情况下自动变为科学技术法,并且保持两位小数。那么格式应该为:

gcSpreadSheet1.Sheets.Cells.Formatter = new GrapeCity.Windows.SpreadSheet.Data.GeneralFormatter(GrapeCity.Windows.SpreadSheet.Data.FormatMode.CustomMode, "#,##0.000 ");
            gcSpreadSheet1.Sheets.SetValue(0, 4, 11111111111111.112);


另外,如果您想在不同数字长度之间显示不同格式,需要在valuechanged里面判断,手动更改不同格式。
谢谢

founderedu1 发表于 2015-6-26 17:08:00

不行,有别的解决方案吗?
我输入12345678901234567890
显示:
123,456,789,012,345,600,000

双击后变为:
1.23457E+19

不能解决问题。

iceman 发表于 2015-6-29 14:01:00

回复 3楼founderedu1的帖子

抱歉,目前Spread 自身无法设置编辑状态下格式,目前我们在考虑通过自定义编辑器来实现,有进展通知您。谢谢

iceman 发表于 2015-6-29 16:09:00

回复 3楼founderedu1的帖子

可以结合 EditStarting 和 EditEnd 事件来绕过这个问题,参考代码如下:

private void Window_Loaded(object sender, RoutedEventArgs e)
      {
            GeneralFormatter gf = new GeneralFormatter();
            gcSpreadSheet1.Sheets.Cells.Formatter = new GrapeCity.Windows.SpreadSheet.Data.GeneralFormatter(GrapeCity.Windows.SpreadSheet.Data.FormatMode.CustomMode, "#,##0.000 ");
            gcSpreadSheet1.Sheets.SetValue(0, 4, 12345678901234567890);
            gcSpreadSheet1.View.EditStarting += new EventHandler<GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs>(View_EditStarting);
            gcSpreadSheet1.View.EditEnd += new EventHandler<GrapeCity.Windows.SpreadSheet.UI.EditCellEventArgs>(View_EditEnd);
      }

      void View_EditEnd(object sender, GrapeCity.Windows.SpreadSheet.UI.EditCellEventArgs e)
      {
            if (e.Row == 0 &amp;&amp; e.Column == 4)
            {
                this.gcSpreadSheet1.View.UseFormatterForEditing = false;
                this.gcSpreadSheet1.ActiveSheet.DefaultStyle.Formatter = new GeneralFormatter("#,##0.000 ");
            }

      }

      void View_EditStarting(object sender, GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs e)
      {
            if (e.Row == 0 &amp;&amp; e.Column == 4)
            {
                this.gcSpreadSheet1.View.UseFormatterForEditing = true;
                this.gcSpreadSheet1.ActiveSheet.DefaultStyle.Formatter = new GeneralFormatter("#,##0.000 ");
            }
      }

iceman 发表于 2015-7-17 17:40:00

回复 3楼founderedu1的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢   
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页: [1]
查看完整版本: WPF版本的科学计数法导致数据不准