找回密码
 立即注册

QQ登录

只需一步,快速开始

founderedu1

注册会员

16

主题

39

帖子

115

积分

注册会员

积分
115

活字格认证微信认证勋章

founderedu1
注册会员   /  发表于:2015-6-26 14:22  /   查看:7309  /  回复:5
做财务数据统计,当数据太长时直接就变成了科学计数法,因财务最小单位是元,甚至到分,科学计数法直接就让数据变的不准了。
另为,财务系统需要千分位,现在就不成了,有没有解决办法。
格式设置为:
  1. #,##0_
复制代码

但当数字超过13位就会变成科学计数法。

怎么解决?

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-6-26 16:18:00
沙发
回复 1楼founderedu1的帖子

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

  1. gcSpreadSheet1.Sheets[0].Cells[0, 4].Formatter = new GrapeCity.Windows.SpreadSheet.Data.GeneralFormatter(GrapeCity.Windows.SpreadSheet.Data.FormatMode.CustomMode, "#,##0.000 ");
  2.             gcSpreadSheet1.Sheets[0].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
5#
回复 3楼founderedu1的帖子

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

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

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

  16.         }

  17.         void View_EditStarting(object sender, GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs e)
  18.         {
  19.             if (e.Row == 0 &amp;&amp; e.Column == 4)
  20.             {
  21.                 this.gcSpreadSheet1.View.UseFormatterForEditing = true;
  22.                 this.gcSpreadSheet1.ActiveSheet.DefaultStyle.Formatter = new GeneralFormatter("#,##0.000 ");
  23.             }
  24.         }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-7-17 17:40:00
6#
回复 3楼founderedu1的帖子

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部