找回密码
 立即注册

QQ登录

只需一步,快速开始

p332718873

论坛元老

42

主题

85

帖子

8225

积分

论坛元老

积分
8225

活字格认证

p332718873
论坛元老   /  发表于:2013-11-5 08:52  /   查看:8509  /  回复:7
版主您好:

    请问插入行操作(如同excel中插入行,选择活动单元格下移),这个操作的代码是什么?

我研究了下this.spread1.ActiveSheet.AddRows(0, 2, GrapeCity.Windows.SpreadSheet.Data.SheetArea.Cells);
第三个参数无论怎么设置,插入的都是正行数据,请问正确的做法是什么?

7 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-11-5 12:23:00
沙发
回复 1楼p332718873的帖子

p332718873 你好,

对于 GrapeCity.Windows.SpreadSheet.Data.SheetArea.Cells 这个参数的理解有些误差。

这个参数只是设置插入行的位置:
CornerHeader = 0,表角(左上侧)
Cells = 1,普通单元格
RowHeader = 2,行头
ColumnHeader = 4,列头

你可以通过以下代码查看效果:
this.GCSpreadSheet1.ActiveSheet.AddRows(0, 2, GrapeCity.Windows.SpreadSheet.Data.SheetArea.ColumnHeader);
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-5 12:24:00
板凳
回复 1楼p332718873的帖子

这个问题:
请问插入行操作(如同excel中插入行,选择活动单元格下移),这个操作的代码是什么?

  1. private void button1_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             int activeRowIndex=this.GCSpreadSheet1.Sheets[0].ActiveRowIndex;
  4.             int activeColIndex = this.GCSpreadSheet1.Sheets[0].ActiveColumnIndex;

  5.             //插入行
  6.             //this.GCSpreadSheet1.Sheets[0].AddRows(activeRowIndex, 1);

  7.             this.GCSpreadSheet1.ActiveSheet.AddRows(0, 2, GrapeCity.Windows.SpreadSheet.Data.SheetArea.ColumnHeader);

  8.             //活跃单元格下移动
  9.             this.GCSpreadSheet1.Sheets[0].SetActiveCell(activeRowIndex + 1, activeColIndex);
  10.         }
复制代码
回复 使用道具 举报
p332718873
论坛元老   /  发表于:2013-11-5 14:34:00
地板

我要的功能是这样的

回复 3楼iceman的帖子

版主您好,我要实现这样的效果
插入前

aaa.png

插入后

bbb.png


就如同在设计器中 点击 insert -> Shift cells rigth 实现的效果一样,
您说的 this.spread1.ActiveSheet.AddRows(1, 1, GrapeCity.Windows.SpreadSheet.Data.SheetArea.ColumnHeader);
效果只是增加了表头行数
回复 使用道具 举报
p332718873
论坛元老   /  发表于:2013-11-5 17:00:00
5#
麻烦版主解决下,急~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-5 19:19:00
6#
回复 5楼p332718873的帖子

4# 第一个问题请使用以下代码实现:

  1. private void button1_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             List<CellRange> list = this.gcSpreadSheet1.Sheets[0].Selections.OrderBy<CellRange, int>(delegate(CellRange item)
  4.             {
  5.                 return (item.Column + item.ColumnCount);
  6.             }).Reverse<CellRange>().ToList<CellRange>();
  7.             HashSet<int> set = new HashSet<int>();
  8.             for (int i = 0; i < list.Count; i++)
  9.             {
  10.                 CellRange cellRange = list[i];
  11.                 int count = 0;
  12.                 for (int j = 0; j < cellRange.ColumnCount; j++)
  13.                 {
  14.                     if (!set.Contains(cellRange.Column + j))
  15.                     {
  16.                         set.Add(cellRange.Column + j);
  17.                         count++;
  18.                     }
  19.                 }
  20.                 this.gcSpreadSheet1.Sheets[0].AddColumns(this.gcSpreadSheet1.Sheets[0].ColumnCount, count);
  21.                 this.MoveCellRangeRight(cellRange);

  22.             }
  23.         }

  24.         private void MoveCellRangeRight(CellRange cellRange)
  25.         {
  26.             CellRange range = new CellRange(cellRange.Row, cellRange.Column, cellRange.RowCount, this.gcSpreadSheet1.Sheets[0].ColumnCount - cellRange.Column);
  27.             CellRange range2 = new CellRange(cellRange.Row, cellRange.Column + cellRange.ColumnCount, (this.gcSpreadSheet1.Sheets[0].ColumnCount - cellRange.Column) - cellRange.ColumnCount, cellRange.ColumnCount);
  28.             this.gcSpreadSheet1.Sheets[0].MoveTo(range.Row, range.Column, range2.Row, range2.Column, range.RowCount, range.ColumnCount - cellRange.ColumnCount, CopyToOption.All);
  29.         }
复制代码


请问插入行操作(如同excel中插入行,选择活动单元格下移),这个操作的代码是什么?更改一个枚举值:

  1. private void button1_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             int activeRowIndex=this.GCSpreadSheet1.Sheets[0].ActiveRowIndex;
  4.             int activeColIndex = this.GCSpreadSheet1.Sheets[0].ActiveColumnIndex;

  5.             //插入行
  6.             //this.GCSpreadSheet1.Sheets[0].AddRows(activeRowIndex, 1);

  7.             this.GCSpreadSheet1.ActiveSheet.AddRows(0, 2, GrapeCity.Windows.SpreadSheet.Data.SheetArea.Cells );

  8.             //活跃单元格下移动
  9.             this.GCSpreadSheet1.Sheets[0].SetActiveCell(activeRowIndex + 1, activeColIndex);
  10.         }
复制代码
回复 使用道具 举报
p332718873
论坛元老   /  发表于:2013-11-5 22:26:00
7#
多谢了  问题成功解决了~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-6 09:04:00
8#
回复 7楼p332718873的帖子

不客气,有问题欢迎开新帖提问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部