找回密码
 立即注册

QQ登录

只需一步,快速开始

rkk

银牌会员

14

主题

37

帖子

2749

积分

银牌会员

积分
2749

活字格认证

rkk
银牌会员   /  发表于:2012-12-4 13:17  /   查看:7356  /  回复:9
如何由 A 栏 复制到 C 栏, 包含格式, 表头, 方程式, 但不包含资料?
我用的是 spread 5
用 copyrange 可以复制,但不包括格式及表头
fpSpread_Sheet1.CopyRange(0,0,0,6,101,6,False)

thanks!

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-4 17:08:00
沙发
rkk 你好

首先要和你确认一下,你使用的是Spread for WinForms还是Spread for ASP.NET,因为,针对不同产品有不同的发帖区。
回复 使用道具 举报
rkk
银牌会员   /  发表于:2012-12-4 18:33:00
板凳
是 spread for WinForms, 谢谢!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-5 17:07:00
地板
回复 3楼rkk的帖子

rkk  你好

该需求需要以整列为单位进行复制,代码如下:
  1.     SelectionUnit unit = fpSpread1.ActiveSheet.SelectionUnit;
  2.     fpSpread1.ActiveSheet.SelectionUnit = SelectionUnit.Column;
  3.     fpSpread1.ActiveSheet.ClearSelection();
  4.     fpSpread1.ActiveSheet.AddSelection(0, 0, 101, 6);
  5.     fpSpread1.ActiveSheet.ClipboardCopy();
  6.     fpSpread1.ActiveSheet.ClearSelection();
  7.     fpSpread1.ActiveSheet.AddSelection(0, 6, 101, 6);
  8.     fpSpread1.ActiveSheet.ClipboardPaste();
  9.     fpSpread1.ActiveSheet.ClearSelection();
复制代码
回复 使用道具 举报
rkk
银牌会员   /  发表于:2012-12-5 17:26:00
5#
我都找到复制表头的方式,同你的一样,但仍不能做到清除数据. 测试加入 ClearSelection() 都是没有作用. 因 旧栏位里是有数据存在的. 以下为我的代码

       fpSpreadSAM_Sheet1.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Column
        fpSpreadSAM.ActiveSheet.AddSelection(0, 6 - 1, 1, 6)
        fpSpreadSAM.ActiveSheet.ClipboardCopy()
        fpSpreadSAM.ActiveSheet.ClearSelection()

        fpSpreadSAM.ActiveSheet.AddSelection(0, 24 - 1, 1, 6)
        fpSpreadSAM.ActiveSheet.ClipboardPaste()
        fpSpreadSAM.ActiveSheet.ClearSelection()
        fpSpreadSAM_Sheet1.SelectionUnit = FarPoint.Win.Spread.Model.SelectionUnit.Cell
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-5 17:29:00
6#
回复 5楼rkk的帖子
  1.     SelectionUnit unit = fpSpread1.ActiveSheet.SelectionUnit;
  2.     fpSpread1.ActiveSheet.SelectionUnit = SelectionUnit.Column;
  3.     fpSpread1.ActiveSheet.ClearSelection();
  4.     fpSpread1.ActiveSheet.AddSelection(0, 0, 101, 6);
  5.     fpSpread1.ActiveSheet.ClipboardCopy();
  6.     fpSpread1.ActiveSheet.ClearSelection();
  7.     fpSpread1.ActiveSheet.AddSelection(0, 6, 101, 6);
  8.     fpSpread1.ActiveSheet.ClipboardPaste();
  9.     fpSpread1.ActiveSheet.ClearRange(0, 6, 101, 6, true);
  10.     fpSpread1.ActiveSheet.ClearSelection();
复制代码
回复 使用道具 举报
rkk
银牌会员   /  发表于:2012-12-6 12:19:00
7#
测试后, 虽可清除,但同时会将格式及方程式清除,同 DataOnly=True 有出入呀...
fpSpreadSAM.ActiveSheet.ClearRange(0, 24 - 1, 101, 6, True)
回复 使用道具 举报
rkk
银牌会员   /  发表于:2012-12-6 14:21:00
8#
Hi dof,
   已解决此问题,加多句 fpSpreadSAM.ActiveSheet.ClipboardPaste(FarPoint.Win.Spread.ClipboardCopyOptions.Formulas)  即可. 将清除的 Formulas 填回. 以下为完成的代码.
Thanks!


        '设定可复制表头
        fpSpreadSAM.ClipboardOptions = ClipboardOptions.ColumnHeaders

        fpSpreadSAM.ActiveSheet.SelectionUnit = SelectionUnit.Column
        fpSpreadSAM.ActiveSheet.ClearSelection()
        fpSpreadSAM.ActiveSheet.AddSelection(0, 5, 101, 6)
        fpSpreadSAM.ActiveSheet.ClipboardCopy()
        fpSpreadSAM.ActiveSheet.ClearSelection()

        fpSpreadSAM.ActiveSheet.AddSelection(0, 23, 101, 6)
        fpSpreadSAM.ActiveSheet.ClipboardPaste()
        fpSpreadSAM.ActiveSheet.ClearRange(0, 23, 101, 6, True)
        fpSpreadSAM.ActiveSheet.ClipboardPaste(FarPoint.Win.Spread.ClipboardCopyOptions.Formulas)   '只复制方程式
        fpSpreadSAM.ActiveSheet.ClearSelection()
        fpSpreadSAM.ActiveSheet.SelectionUnit = SelectionUnit.Cell

        '设定回不可复制表头
        fpSpreadSAM.ClipboardOptions = ClipboardOptions.NoHeaders
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-6 15:30:00
9#
  非常感谢你分享完整的代码
回复 使用道具 举报
rkk
银牌会员   /  发表于:2012-12-6 17:59:00
10#
都要多谢 dof 的帮助...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部