VSTO Excel单元格填充的速度和效率问题

测试方法:填写10000个单元格内容为"asd"

 

方法序号方法时间(毫秒)备注
1循环赋值1万次this.Sheets["Sheet1"].Cells(i, 1).Value = "das";3500 
2先定义一个Sheet,然后赋值为this.Sheets["Sheet1"].之后运行:
sheet.Cells[i, 1].Value= "das";
3500速度一样
3this.Sheets["Sheet1"].Range("A"+i).Value = "das";3200Range比Cells快一点
4先存在数组x里面,再区域赋值:
String[] x = new String[10000];
            for (int i = 0; i < 10000; i++) { x[i] = "das"; }
            this.Sheets[1].Range("A1: A10000").Value = this.Sheets[1].Application.Transpose(x);
80这种方式最快,注意excel中将数组看做一行数据,如果需要将数组赋值给列,则要调用Application.Transpose

 

提高速度,应该遵循以下几个原则:

1、减少对象的访问(包括属性的读取和写入)
例如处理表格时先将区域读取到二维数组里面,修改数组后,再将数组整体赋值给区域
2、关闭屏幕刷新
 S1.Chart.ChartData.Workbook.Application.Visible = false;
           S1.Chart.ChartData.Workbook.Application.ScreenUpdating =false;
3、减少循环(总运算次数)
4、减少某些内置函数的使用,尽量用基本的运算符
5、减少数组元素的访问(需要多次访问同一数组元素的,可以用临时变量代替)
6、注意计通比

转载于:https://www.cnblogs.com/tigerlove/p/3151483.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值