找回密码
 立即注册

QQ登录

只需一步,快速开始

rickjelly2004

初级会员

16

主题

48

帖子

466

积分

初级会员

积分
466
rickjelly2004
初级会员   /  发表于:2017-5-8 17:40  /   查看:7649  /  回复:13
Me.eltBackUpList.ClearSelection()
Me.eltBackUpList.AddSelection(0, 4, 1, 2)
Me.eltBackUpList.ClipboardCopy(FarPoint.Win.Spread.ClipboardPasteOptions.All)

Me.eltShukyakuDataList.ActiveRowIndex = currentRowIndex
Me.eltShukyakuDataList.ActiveColumnIndex = 1
Me.eltShukyakuDataList.ClipboardPaste(FarPoint.Win.Spread.ClipboardPasteOptions.All)

在win7  32位中没有问题
64位的时候, 报错误
System.Runtime.InteropServices.ExternalException   System.Windows.Forms.dll
所请求的剪贴板操作失败。

请问如何解决

13 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-8 18:30:57
沙发
这个问题我们这边先研究一下,明天给您回答
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-9 11:08:56
板凳
您好,请问一下您的SPREAD for Windows Forms的版本是多少?
回复 使用道具 举报
rickjelly2004
初级会员   /  发表于:2017-5-9 11:40:15
地板
ClarkPan 发表于 2017-5-9 11:08
您好,请问一下您的SPREAD for Windows Forms的版本是多少?

Spread for windows form 8.0J  好像是 SP3(8.0.3503.2008)
回复 使用道具 举报
rickjelly2004
初级会员   /  发表于:2017-5-9 11:41:49
5#
本帖最后由 rickjelly2004 于 2017-5-9 11:42 编辑
ClarkPan 发表于 2017-5-9 11:08
您好,请问一下您的SPREAD for Windows Forms的版本是多少?

补充说一下:
我的win7  64BIT 100%再现

部分win7 32bit的 不能再现, 有的机器也是100%再现, 所以不知道什么原因

如果有其他方案对应的话, 也请告诉我.(目前是两个spread,采用上面的代码 通过剪切板来完成数据样式生成的)
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-10 18:15:36
6#
请问您进行上述代码操作时候是如何触发的?
回复 使用道具 举报
rickjelly2004
初级会员   /  发表于:2017-5-11 11:59:56
7#
dexteryao 发表于 2017-5-10 18:15
请问您进行上述代码操作时候是如何触发的?

比如说 formload的时候, 我需要把 页面的数据加载好
我用模板spread Me.eltBackUpList 的样式 然后ClipboardCopy拷贝到画面显示的spread Me.eltShukyakuDataList (ClipboardPaste)
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-11 16:18:12
8#
现在从错误来看是操作系统剪切板出错了,具体原因无法确定,比如其他程序占用剪切板也会出这个问题。

对于您的需求,可以通过循环将您需要的信息获取后,然后设置到新的spread中即可


  1.             for (var i = 0; i < 5; i++)
  2.             {
  3.                 for (var j = 0; j < 5; j++)
  4.                 {
  5.                     var formula = fpSpread1.ActiveSheet.Cells[i, j].Formula;
  6.                     if (string.IsNullOrEmpty(formula))
  7.                     {
  8.                         fpSpread2.ActiveSheet.Cells[i, j].Value =
  9.                             fpSpread1.ActiveSheet.Cells[i, j].Value;
  10.                     }
  11.                     else
  12.                     {
  13.                         fpSpread2.ActiveSheet.Cells[i, j].Formula = formula;
  14.                     }

  15.                     var style = fpSpread1.ActiveSheet.GetStyleInfo(i, j);
  16.                     if (style != null)
  17.                     {
  18.                         fpSpread2.ActiveSheet.SetStyleInfo(i, j, style);
  19.                     }
  20.                 }
  21.             }
复制代码
回复 使用道具 举报
rickjelly2004
初级会员   /  发表于:2017-5-11 18:15:56
9#
dexteryao 发表于 2017-5-11 16:18
现在从错误来看是操作系统剪切板出错了,具体原因无法确定,比如其他程序占用剪切板也会出这个问题。

对 ...

这个方式测试了, 发现单元格有合并的就不可以

不能一个一个单元搞啊, 怎么办呢
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-5-12 12:18:52
10#
span 也复制一下

                    var span = fpSpread1.ActiveSheet.GetSpanCell(i, j);
                    if (span != null && span.Row == i && span.Column == j)
                    {
                        fpSpread2.ActiveSheet.AddSpanCell(i, j, span.RowCount, span.ColumnCount);
                    }
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部