找回密码
 立即注册

QQ登录

只需一步,快速开始

zhaoruiheng

论坛元老

10

主题

48

帖子

8296

积分

论坛元老

积分
8296

活字格认证

zhaoruiheng
论坛元老   /  发表于:2015-1-14 09:19  /   查看:5962  /  回复:5
我们现在需要实现的效果是将某一行(或多行)的全部格式(边框、alignmengt)等复制到其他行,使用了ClipboardCopy和ClipboardPaste,但生成的新行的格式和被复制的格式明显不同。见下图:
模板如下:

模板.jpg (32.74 KB, 下载次数: 382)

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2015-1-14 10:02:00
沙发
回复 1楼zhaoruiheng的帖子

有一个问题,我查看你的复制文本和粘贴文本不同(“应发工资”=》赵勇),这个是正确的吗?能不能抽出一个 Demo 到论坛查看,我们可以快速的确认问题。谢谢
回复 使用道具 举报
zhaoruiheng
论坛元老   /  发表于:2015-1-14 10:06:00
板凳
回复 2楼iceman的帖子

行号:4是复制格式的行,5和6是格式被复制到的行,4行的边框和alignment等均未能粘贴到5和6行。从现有代码中抽取demo比较麻烦,而且涉密,暂时无法上传,您看从我这段代码中能否查看出问题?
回复 使用道具 举报
zhaoruiheng
论坛元老   /  发表于:2015-1-14 10:27:00
地板

使用如下的代码可以粘贴成功一行的格式

代码:
fpSpread1.Sheets[1].Rows.Add(contentIndex + contentCount + 1, contentCount * (UserList.Count - 1));
                //在“表尾”部分之前插入多行
                FarPoint.Win.Spread.Model.CellRange cr = new FarPoint.Win.Spread.Model.CellRange(contentIndex + 1, 0, contentCount, fpSpread1.Sheets[1].Columns.Count);
                fpSpread1.Sheets[1].ClipboardCopy(cr);//复制格式
                for(int i = 1;i < UserList.Count;i++)
                {
                    fpSpread1.Sheets[1].AddSelection(contentIndex + contentCount * i + 1, 0, contentCount, fpSpread1.Sheets[1].Columns.Count);
                    fpSpread1.Sheets[1].ClipboardPaste(ClipboardPasteOptions.All);//粘贴格式
                }

效果:
效果图.jpg (24.99 KB, 下载次数: 370)

123.jpg

34.61 KB, 下载次数: 373

回复 使用道具 举报
zhaoruiheng
论坛元老   /  发表于:2015-1-14 10:43:00
5#

问题已解决

搞定.jpg (28.11 KB, 下载次数: 368)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-14 11:26:00
6#
回复 5楼zhaoruiheng的帖子

感谢反馈问题结果,如果一次性操作单元格过多的话,可以调用以下代码进行一次性重绘解决问题:

  1. fpSpread1.SuspendLayout();
  2. //操作
  3. fpSpread1.ResumeLayout();
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部