找回密码
 立即注册

QQ登录

只需一步,快速开始

oceansoft
高级会员   /  发表于:2013-3-28 14:56  /   查看:5788  /  回复:3
不管是调用ClipboardCut,还是直接点击ctrl+x剪切,然后进行粘贴的时候,尽管已经设置了ClipboardPasteOptions.Values,但是粘贴时还是将所有的格式、样式等都带到了目标单元格,请问这种情况怎么处理?

3 个回复

倒序浏览
Zoe
银牌会员   /  发表于:2013-3-28 16:30:00
沙发
在剪贴时,一般情况下是不允许只剪贴值的。这和Excel的策略是相同的。
不过您可以使用如下代码来代替ClipboardPaste方法 在剪贴之后的行为。
  1. private void CustomPasteAction(int sourceSheetIndex,CellRange sourceRange,int targetSheetIndex, CellRange targetRange)
  2.         {
  3.             if (this.gcSpread1.View.ClipBoardOptions == ClipboardPasteOptions.Values)
  4.             {
  5.                 object[,] sourceValue = this.gcSpread1.Sheets[sourceSheetIndex].GetArray(sourceRange.Row,sourceRange.Column,sourceRange.RowCount, sourceRange.ColumnCount);
  6.                 this.gcSpread1.Sheets[targetSheetIndex].SetArray(targetRange.Row, targetRange.Column, sourceValue);
  7.                 this.gcSpread1.Sheets[sourceSheetIndex].Cells[sourceRange.Row, sourceRange.Column, sourceRange.RowCount + sourceRange.Row - 1, sourceRange.ColumnCount + sourceRange.Column - 1].Value = null;
  8.             }
  9.         }
复制代码
回复 使用道具 举报
oceansoft
高级会员   /  发表于:2013-3-29 13:51:00
板凳
用这个方法去做剪切操作,导致单元格内的字体样式没有复制过去,请问怎么在复制字体样式并且不复制背景色的情况下复制内容?
回复 使用道具 举报
Zoe
银牌会员   /  发表于:2013-3-29 14:14:00
地板
  1. this.gcSpreadSheet1.AutoRefresh= false;
  2.             Cell sourceCell, targetCell;
  3.             for (int i = 0; i <  sourceRange.RowCount; i++)
  4.             {
  5.                 for (int j = 0; j <  sourceRange.ColumnCount; j++)
  6.                 {
  7.                     sourceCell = this.gcSpreadSheet1.Sheets[sourceSheetIndex].Cells[sourceRange.Row + i, sourceRange.Column + j];
  8.                     targetCell = this.gcSpreadSheet1.Sheets[targetSheetIndex].Cells[targetRange.Row + i, targetRange.Column + j];
  9.                     targetCell.Value = sourceCell.Value;
  10.                     targetCell.FontFamily = sourceCell.FontFamily;
  11.                     targetCell.FontSize = sourceCell.FontSize;
  12.                     targetCell.FontStretch = sourceCell.FontStretch;
  13.                     targetCell.FontStyle = sourceCell.FontStyle;
  14.                     targetCell.FontWeight = sourceCell.FontWeight;
  15.                     targetCell.FontTheme = sourceCell.FontTheme;
  16.                     sourceCell.Value = null;
  17.                     sourceCell.ResetFontFamily();
  18.                     sourceCell.ResetFontSize();
  19.                     sourceCell.ResetFontStretch();
  20.                     sourceCell.ResetFontStyle();
  21.                     sourceCell.ResetFontTheme();
  22.                     sourceCell.ResetFontWeight();
  23.                 }
  24.             }
  25.             this.gcSpreadSheet1.AutoRefresh =true;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部