您的位置:首页 > 其它

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

2013-06-23 19:50 706 查看
测试方法:填写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、注意计通比
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: