找回密码
 立即注册

QQ登录

只需一步,快速开始

burns

初级会员

24

主题

54

帖子

498

积分

初级会员

积分
498

活字格认证

burns
初级会员   /  发表于:2012-6-25 12:33  /   查看:7972  /  回复:6
如何设置表格中的多行的单元格格式与表格中的某一行的格式相同?即,如我有一万行,我设置了第十行的单元格格式,我想让下边连续的9980行与第十行的格式相同。
我用复制粘贴功能,虽然能达到效果,但速度非常慢。

6 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-6-25 13:54:00
沙发
回复 1楼burns的帖子

burns 你好,可以通过   DefaultRow 设置该 Sheet 中行默认格式,测试代码:
  1.       private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.Sheets[0].Rows.Add(1, 1);
  4.         }

  5.         private void Form1_Load(object sender, EventArgs e)
  6.         {
  7.             this.fpSpread1.Sheets[0].RowCount = 10;

  8.             FarPoint.Win.Spread.Rows.DefaultRow df;
  9.             df = fpSpread1.ActiveSheet.Rows.Default;
  10.             df.BackColor = System.Drawing.Color.Green;
  11.         }
复制代码
回复 使用道具 举报
burns
初级会员   /  发表于:2012-6-25 16:47:00
板凳
版主,
1、一行当中的每一个单元格的格式,如边框,背景,字体等,可能都不同,默认行如何设置其中的具体单元格的不同格式?
2、我只想设置部分行的格式与某行的格式相同,复制粘贴已经能实现,但数据量比较大时,很慢。是否有类似的功能实现?

请教,谢谢!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-25 17:31:00
地板
回复 3楼burns的帖子

楼主的 Case ,defaultRow 无法实现。
不知道楼主如何实现格式粘贴,我的实现方法如下:

  1. FarPoint.Win.Spread.InputMap inputmap3;
  2.             inputmap3 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
  3.             inputmap3.Put(new FarPoint.Win.Spread.Keystroke(Keys.V, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardPasteFormatting);

  4.             FarPoint.Win.Spread.InputMap inputmap4;
  5.             inputmap4 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused);
  6.             inputmap4.Put(new FarPoint.Win.Spread.Keystroke(Keys.V, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardPasteFormatting);
复制代码
回复 使用道具 举报
burns
初级会员   /  发表于:2012-6-25 20:35:00
5#
我的是这样:
           //复制格式
           sheetView.Models.Selection.ClearSelection();
                sheetView.Models.Selection.SetSelection(rowIndex, 0, 1, sheetView.ColumnCount);
                sheetView.ClipboardCopy(ClipboardCopyOptions.Formatting);

                //粘贴格式
                sheetView.SetActiveCell(rowIndex + 1, 0);
                sheetView.ClipboardPaste(ClipboardPasteOptions.Formatting);
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-26 17:37:00
6#
因为你需要设置的是动态的不确定区域,所以并没有十分便捷的方法

如果复制行中每个单元格的格式固定的,可以创建NamedStyle来存放这些样式,然后将这些样式应用到需要的单元格中:
  1.         FarPoint.Win.Spread.NamedStyle ns1 = new FarPoint.Win.Spread.NamedStyle("TestStyle1");
  2.         FarPoint.Win.Spread.NamedStyle ns2 = new FarPoint.Win.Spread.NamedStyle("TestStyle2");  

  3.         private void Form1_Load(object sender, EventArgs e)
  4.         {
  5.             ns1.BackColor = Color.LightPink;
  6.             ns1.Border = new FarPoint.Win.LineBorder(Color.BlueViolet, 2);

  7.             ns2.BackColor = Color.Black;
  8.             ns2.Border = new FarPoint.Win.LineBorder(Color.Red, 1);

  9.             fpSpread1.NamedStyles.Add(ns1);
  10.             fpSpread1.NamedStyles.Add(ns2);

  11.         }

  12.         private void Button1_Click(object sender, EventArgs e)
  13.         {
  14.             fpSpread1.ActiveSheet.Cells[0, 0, 1, 2].StyleName = "TestStyle1";
  15.             fpSpread1.ActiveSheet.Cells[2, 3, 4, 5].StyleName = "TestStyle2";
  16.         }
复制代码
回复 使用道具 举报
burns
初级会员   /  发表于:2012-6-26 23:13:00
7#
谢谢,我用for语句已经基本能达到要求了,不过您这个可能会简洁及更快一些。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部