找回密码
 立即注册

QQ登录

只需一步,快速开始

cingsoft

高级会员

8

主题

26

帖子

1380

积分

高级会员

积分
1380

活字格认证

cingsoft
高级会员   /  发表于:2015-7-8 14:42  /   查看:6432  /  回复:5
比如我的底层数据是2.4956 我想保留三位小数 2.496 如何实现

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-7-8 17:28:00
沙发
回复 1楼cingsoft的帖子

可以通过四舍五入公式设置:

  1.             gcSpreadSheet1.Sheets[0].Cells[0, 4].Formula = "ROUND(E1,3)";
  2.             gcSpreadSheet1.Sheets[0].Cells[0, 4].Value = 2.4956;
复制代码
回复 使用道具 举报
cingsoft
高级会员   /  发表于:2015-7-8 18:45:00
板凳
回复 2楼iceman的帖子

ROUND(E1,3) 这个E1代表什么 指的是我所在的单元格吗?
回复 使用道具 举报
cingsoft
高级会员   /  发表于:2015-7-9 09:22:00
地板
回复 2楼iceman的帖子

你好:我设置完精度之后为什么变成这样了

        /// <summary>
        /// 设置数据精度
        /// </summary>
        /// <param name="行数"></param>
        /// <param name="设置精度的列"></param>
        private void SetPrecision(int RowCount, int ColumnIndex)
        {
            for (int i = -1; i < RowCount;i++ )
            {
                if (SpreadTableWorksheet.Cells[i, ColumnIndex].Value != null)
                {
                    //decimal Value = Convert.ToDecimal(SpreadTableWorksheet.Cells[i, ColumnIndex].Value);
                    SpreadTableWorksheet.Cells[i, ColumnIndex].Formula = "ROUND(E1,3)";
                    SpreadTableWorksheet.Cells[i, ColumnIndex].Value = 2.49564;
                }
            }
        }

我是通过循环的方式 来设置 还有这个E1到底指的是什么?
QQ截图20150709091713.png
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-7-9 16:24:00
5#
回复 4楼cingsoft的帖子

E1 指的是在公式中当前单元格的坐标,E1 就代表列头为 E 行头为 1 的单元格位置。

如果您的公式过多,可以使用 R1C1 这种引用方式,R代表行,C 代表列,R1C1 即代表Cell[0,0]。这样您可以通过循环拼凑公式:

  1. Worksheet SpreadTableWorksheet;
  2.         public MainWindow()
  3.         {
  4.             InitializeComponent();
  5.             SpreadTableWorksheet = this.gcSpreadSheet1.ActiveSheet;
  6.             SpreadTableWorksheet.ReferenceStyle = ReferenceStyle.R1C1;
  7.             for (int i = 0; i < 11; i++)
  8.             {
  9.                 SpreadTableWorksheet.Cells[i, 0].Value = 2.49564;
  10.             }
  11.             SetPrecision(20, 0);

  12.         }

  13.         /// <summary>
  14.         /// 设置数据精度
  15.         /// </summary>
  16.         /// <param name="行数"></param>
  17.         /// <param name="设置精度的列"></param>
  18.         private void SetPrecision(int RowCount, int ColumnIndex)
  19.         {
  20.             for (int i = 0; i < RowCount; i++)
  21.             {
  22.                 if (SpreadTableWorksheet.Cells[i, ColumnIndex].Value != null)
  23.                 {
  24.                     //decimal Value = Convert.ToDecimal(SpreadTableWorksheet.Cells[i, ColumnIndex].Value);
  25.                     SpreadTableWorksheet.Cells[i, ColumnIndex].Formula = "ROUND(R"+(i+1).ToString()+"C1,3)";
  26.                     SpreadTableWorksheet.Cells[i, ColumnIndex].Value = 2.49564;
  27.                 }
  28.             }
  29.         }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-7-17 17:36:00
6#
回复 1楼cingsoft的帖子

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