找回密码
 立即注册

QQ登录

只需一步,快速开始

hptj

高级会员

72

主题

240

帖子

1170

积分

高级会员

积分
1170

活字格认证微信认证勋章元老葡萄

[已处理] 设置celltype

hptj
高级会员   /  发表于:2015-1-7 10:46  /   查看:10410  /  回复:12
我在对一个500行20列的数值单元格设置celltype时,运行起来特别慢,有没有什么快的方法?

12 个回复

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

是针对整张表单设置,还是表单中某些单元格设置?
如果是整个表单,可以通过以下代码设置:
  1.             FarPoint.Win.Spread.CellType.NumberCellType nbct = new FarPoint.Win.Spread.CellType.NumberCellType();
  2.             nbct.EnableSubEditor=true;
  3.             nbct.DropDownButton = true;
  4.             this.fpSpread1.ActiveSheet.DefaultStyle.CellType = nbct;
复制代码
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-1-7 15:12:00
板凳
表单中,选择了一些区域(500行*20列)的cellrang
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-7 18:05:00
地板
回复 3楼hptj的帖子

测试代码如下:

  1.         private void seToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1_Sheet1.AddSelection(0, 0, 500, 20);
  4.             CellRange cr = this.fpSpread1_Sheet1.GetSelection(0);

  5.             int rowcount = cr.RowCount;
  6.             int colcount = cr.ColumnCount;

  7.             
  8.             FarPoint.Win.Spread.CellType.NumberCellType nbct = new FarPoint.Win.Spread.CellType.NumberCellType();
  9.             nbct.EnableSubEditor=true;
  10.             nbct.DropDownButton = true;

  11.             this.fpSpread1.SuspendLayout();
  12.             for (int i = 0; i < rowcount; i++)
  13.             {
  14.                 for (int j = 0; j < colcount; j++)
  15.                 {
  16.                     this.fpSpread1_Sheet1.Cells[i, j].CellType = nbct;
  17.                 }
  18.             }
  19.             this.fpSpread1.ResumeLayout();
  20.         }
复制代码

SuspendLayout、ResumeLayout方法组合使用,用于实现一次性重绘 Spread UI。
没有发现明显卡顿现象,我想您这边应该是应用场景更加的复杂,能否提供个 Demo用于重现问题?
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-1-9 11:30:00
5#
如果是空白cell,这个代码执行过来没问题,你可以试着给这些单位格赋值,再看看效果,
可以在扩大cells范围,1000*20的cells
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-9 14:06:00
6#
回复 5楼hptj的帖子

附件测试了 12000×50 数据量,复制带有数据的单元格类型好事 1130 毫秒,测试Demo如下:
VS2013+C#+Spread for WinForms8.0
15269.zip (64.49 KB, 下载次数: 504)
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-1-9 14:34:00
7#
谢了,我做个demo发给你
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-1-9 15:39:00
8#
回复 6楼iceman的帖子

下载代码
我在代码里面写了说明

FarpointCellType-demo.rar (19.25 KB, 下载次数: 497)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2015-1-9 16:55:00
9#
回复 8楼hptj的帖子

hptj

我查看了你的代码,如果将button1_Click方法修改为以下代码,是否能够达到你的要求:
  1.     private void button1_Click(object sender, EventArgs e)
  2.     {
  3.         fpSpread1.SuspendLayout();
  4.         ExternalDialogs.CellTypeEditor(this.fpSpread1);
  5.         fpSpread1.ResumeLayout();
  6.     }
复制代码
回复 使用道具 举报
hptj
高级会员   /  发表于:2015-1-9 17:42:00
10#
这样的可以使用,包括我现在也是这么用,我们通常都是用farpoint 来打开excel的文件进编制,对已有sheet页数据进行大范围的,文本对齐及设置celltype时,有时会出现未响应,我想寻求一个高效的设置对齐或celltype的方法。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部