找回密码
 立即注册

QQ登录

只需一步,快速开始

dkings

最新发帖
dkings
注册会员   /  发表于:2015-11-6 17:12:00
11#
回复 10楼Alice的帖子


为什么我设置背景图之后表格默认网格线消失了
QQ图片20151106170953.png

新问题:
表格设置了禁止自动计算,当复制粘贴后表格为何又进行了计算,期望的是不进行计算。设置代码如下:
this.GcSpreadSheet1.AutoRecalculation = false;
回复 使用道具 举报
Helen
高级会员   /  发表于:2015-11-6 17:32:00
12#
回复 11楼dkings的帖子

请上传一个可以重现的Demo,以便我们帮助您处理您具体场景中的问题。
谢谢!
回复 使用道具 举报
dkings
注册会员   /  发表于:2015-11-7 23:22:00
13#
回复 12楼Helen的帖子

public MainPage()
        {
            InitializeComponent();
            //自动计算
            this.GcSpreadSheet1.AutoRecalculation = false;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Worksheet _worksheet = this.GcSpreadSheet1.ActiveSheet;
            ImageBrush im = new ImageBrush();
            im.ImageSource = new BitmapImage(new Uri("/gs.png", UriKind.RelativeOrAbsolute));
            im.AlignmentX = AlignmentX.Right;
            im.AlignmentY = AlignmentY.Top;
            im.Stretch = Stretch.None;
            for (int i = 3; i <= 10; i++)
            {
                for (int j = 3; j <= 10; j++)
                {
                    var rng = _worksheet.Cells[i, j];
                    rng.Background = im;
                }
            }

        }
gs.png
附件上传不上去,上面就是代码,创建一个Silverlight应用程序在默认的MainPage页里添加按钮并添加点击事件,点击后就会出现设置背景后网格消失。

禁止自动计算的问题是操作出来的,操作步骤如下(同一个应用就可以):
1.设置A1的值为:8
2.设置B1的值为:9
3.设置D2的公式为:=A1+B1(上面的代码中已经设置了禁止计算,当前单元格设置公式后没有值,但当第四部操作后就会出现值)
4.除A1,B1,D2三个单元格外任意选中一个单元格点击键盘的Delete按钮,D2的值=17了。(将D2复制,然后任意粘贴到其他单元格也会出现值)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-9 15:35:00
14#
回复 13楼dkings的帖子

问题已经重现了,正在调查中,有进一步结果通知您。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-10 10:21:00
15#
回复 13楼dkings的帖子

添加背景图后覆盖的为Spread 网格线(GridLine),这是Excel行为一致。
我们可以通过设置和单元格网格线一样的边框来解决这个问题,参考代码:

  1. Worksheet _worksheet = this.spread.ActiveSheet;
  2.             ImageBrush im = new ImageBrush();
  3.             im.ImageSource = new BitmapImage(new Uri("pack://application:,,,/WpfApplication2;component/untitled.png", UriKind.RelativeOrAbsolute));
  4.             im.AlignmentX = AlignmentX.Right;
  5.             im.AlignmentY = AlignmentY.Top;
  6.             im.Stretch = Stretch.None;
  7.             for (int i = 3; i <= 10; i++)
  8.             {
  9.                 for (int j = 3; j <= 10; j++)
  10.                 {
  11.                     var rng = _worksheet.Cells[i, j];
  12.                     rng.Background = im;
  13.                     _worksheet.SetBorder(new CellRange(i, j, 1, 1), new BorderLine(_worksheet.GridLineColor, BorderLineStyle.Thin), SetBorderOptions.All);
  14.                 }
  15.             }

  16.             _worksheet.ShowGridLine = true;

复制代码
回复 使用道具 举报
dkings
注册会员   /  发表于:2015-11-12 08:46:00
16#
回复 15楼iceman的帖子

禁止自动计算的问题是操作出来的,操作步骤如下(同一个应用就可以):
1.设置A1的值为:8
2.设置B1的值为:9
3.设置D2的公式为:=A1+B1(上面的代码中已经设置了禁止计算,当前单元格设置公式后没有值,但当第四部操作后就会出现值)
4.除A1,B1,D2三个单元格外任意选中一个单元格点击键盘的Delete按钮,D2的值=17了。(将D2复制,然后任意粘贴到其他单元格也会出现值)
这个问题事什么原因
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-12 18:01:00
17#
回复 16楼dkings的帖子

问题重现了,已经提交给研发组,有进一步结果反馈给你。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-17 13:44:00
18#
回复 16楼dkings的帖子

可以通过以下方法进行处理:

  1.             //关闭
  2.             this.gcspreadsheet1.AutoRecalculation = false;

  3.             this.gcspreadsheet1.SuspendCalcService();
  4.             this.gcspreadsheet1.AutoRecalculation = false;
  5.             this.gcspreadsheet1.ActiveSheet.Cells[0, 0].Value = 8;
  6.             this.gcspreadsheet1.ActiveSheet.Cells[0, 1].Value = 9;
  7.             this.gcspreadsheet1.ActiveSheet.Cells[0, 3].Formula = "A1+B1";

  8.             //开启
  9.             //this.gcspreadsheet1.AutoRecalculation = true;
  10.             //this.gcspreadsheet1.ResumeCalcService();
复制代码
回复 使用道具 举报
dkings
注册会员   /  发表于:2015-11-18 14:46:00
19#
回复 18楼iceman的帖子

您的问题回复的不正确吧!上面我说的操作步骤是有问题的操作步骤,而不是我期望实现的步骤。我现在期望实现的是禁止自动计算,无论怎么操作都不自动计算!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-11-18 17:40:00
20#
回复 19楼dkings的帖子

我通过代码测试没有问题:


  1.             this.gcspreadsheet1.AutoRecalculation = false;
  2.             this.gcspreadsheet1.ActiveSheet.Cells[0, 0].Value = 8;
  3.             this.gcspreadsheet1.ActiveSheet.Cells[0, 1].Value = 9;
  4.             this.gcspreadsheet1.ActiveSheet.Cells[0, 3].Formula = "A1+B1";

  5.             //开启
  6.             this.gcspreadsheet1.AutoRecalculation = true;
  7.             this.gcspreadsheet1.ResumeCalcService();

  8.             //关闭
  9.             this.gcspreadsheet1.AutoRecalculation = false;

  10.             this.gcspreadsheet1.SuspendCalcService();
复制代码


效果图:
Demo1.gif
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部