找回密码
 立即注册

QQ登录

只需一步,快速开始

cccdl
中级会员   /  发表于:2012-2-7 11:49  /   查看:6186  /  回复:7
如题,spread 3.0是否能做到这个机能?
从sheet A中,将指定范围的单元格cut下来,paste到另一个新的页中。

如能,请给出解决路径。多谢。

7 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-2-7 11:59:00
沙发

回复 1# cccdl 的帖子

cccdl 你好,
Spread for ASP.NET 3.0 可以实现该功能。下面是相关代码片段:

  1. private void Page_Load(object sender, System.EventArgs e)
  2. {
  3.    if (this.IsPostBack) return;

  4.    FpSpread1.ActiveSheetView.RowCount = 10;
  5.    for (int i = 0; i<4; i++)
  6.    {
  7.         FpSpread1.ActiveSheetView.SetValue(i, 0, i);
  8.         FpSpread1.ActiveSheetView.SetValue(i, 1, i);
  9.         FpSpread1.ActiveSheetView.SetValue(i, 2, i);
  10.    }   
  11. }

  12. private void Button1_Click(object sender, System.EventArgs e)
  13. {
  14.        FarPoint.Web.Spread.Model.DefaultSheetDataModel dm =   (FarPoint.Web.Spread.Model.DefaultSheetDataModel)FpSpread1.ActiveSheetView.DataModel;
  15.        dm.Copy(0, 0, 5, 1, 3, 2);
  16. }
复制代码
详细内容请参考帮助文档,Copy Method (DefaultSheetDataModel) 章节
回复 使用道具 举报
cccdl
中级会员   /  发表于:2012-2-7 12:33:00
板凳
这个好像是在同一个sheet页中拷贝。
而且用datamodel的话,应该是只能拷贝data, style就考不走。

本质问题是这样的: spread在SaveExcel的时候有一个bug.
当单个sheet过大的时候,会出现OutOfMemory的error.
现在希望通过拆分单个sheet页为多个小sheet的方式来回避这个问题。

所以,现在的问题是:
1,是从一个sheet页拷贝到另一个sheet页;
2,是cell拷贝,而不是data拷贝;

现在需要确定可行性。 多谢。

另,直接拷贝cell对应的data+style也可以达到cell拷贝的效果么?
回复 使用道具 举报
cccdl
中级会员   /  发表于:2012-2-7 12:34:00
地板
另:发错版了,winform开发,稀里糊涂点进asp.net了,请版主帮忙移动一下。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-7 13:11:00
5#

回复 4# cccdl 的帖子

好的,谢谢提醒~
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-7 14:25:00
6#

回复 4# cccdl 的帖子

cccdl 你好,请尝试以下代码:

  1.             fpSpread1.Sheets.Count = 2;
  2.             Random r = new Random();
  3.             int i, j;
  4.             for (i = 0; i <= 3; i++)
  5.             {
  6.                 for (j = 0; j <= 3; j++)
  7.                 {
  8.                     fpSpread1.ActiveSheet.SetValue(i, j, r.Next() - 100000);
  9.                     fpSpread1.ActiveSheet.Cells[i,j].BackColor=Color.Red;
  10.                     fpSpread1.ActiveSheet.Cells[i, j].Border = new FarPoint.Win.LineBorder(Color.Green, 3);

  11.                 }
  12.             }
  13.            
  14.             fpSpread1.ActiveSheet.AddSelection(0, 0, 4, 4);
  15.             fpSpread1.ActiveSheet.ClipboardCopy();
  16.               
  17.             fpSpread1.Sheets[1].ClipboardPaste();
复制代码
回复 使用道具 举报
cccdl
中级会员   /  发表于:2012-2-8 09:32:00
7#
sheet.AddSelection(0,0,10,10)
sheet.ClipboardCut()
可以切下来,但是在paste的时候,贴不上去
生成的excel页是空白的……

继续调试相关代码。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-2-8 12:16:00
8#
cccdl  你好,
下面 Demo 成功进行了复制、粘贴、保存功能,请参考:
SpreadWin3.0.zip (38.65 KB, 下载次数: 561)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部