VSTO Excel单元格填充的速度和效率问题
2013-06-23 19:50
706 查看
测试方法:填写10000个单元格内容为"asd"
提高速度,应该遵循以下几个原则:
1、减少对象的访问(包括属性的读取和写入)
例如处理表格时先将区域读取到二维数组里面,修改数组后,再将数组整体赋值给区域
2、关闭屏幕刷新
S1.Chart.ChartData.Workbook.Application.Visible = false;
S1.Chart.ChartData.Workbook.Application.ScreenUpdating =false;
3、减少循环(总运算次数)
4、减少某些内置函数的使用,尽量用基本的运算符
5、减少数组元素的访问(需要多次访问同一数组元素的,可以用临时变量代替)
6、注意计通比
方法序号 | 方法 | 时间(毫秒) | 备注 |
1 | 循环赋值1万次this.Sheets["Sheet1"].Cells(i, 1).Value = "das"; | 3500 | |
2 | 先定义一个Sheet,然后赋值为this.Sheets["Sheet1"].之后运行: sheet.Cells[i, 1].Value= "das"; | 3500 | 速度一样 |
3 | this.Sheets["Sheet1"].Range("A"+i).Value = "das"; | 3200 | Range比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、注意计通比
相关文章推荐
- Qt 5.5 操作 Excel 的速度 效率问题
- Qt 5.5 操作 Excel 的速度 效率问题
- VSTO SaveCopyAs方法在Excel 2007下必须注意的一个问题
- 用poi包填充excel中单元格 颜色效果
- 使用VSTO复制部分Excel单元格(带格式),粘贴并保存到另一Excel文件中
- FMDB性能优化问题。使用FMDB事务批量更新数据库速度问题。(亲测可以呀---740条数据用和不用事务效率差别20倍+)
- 读取excel模板填充数据 并合并相同文本单元格
- phpexcel 单元格内换行的问题
- 解决VB.net使用COM控件加载Excel文件速度慢的问题
- excel如何快速自动填充空白单元格上一行的内容
- excel如何设置输入数字后单元格自动填充颜色
- excel导出效率慢,单元格样式复制方法分析
- C#实现类似Excel自动填充单元格,后面的数字累加
- PHP生成excel时单元格内换行问题的解决方法
- C#调用NPOI创建Excel文档合并后的单元格写入数据问题一则
- excel表中多位位数字设置成文本后不能自动填充问题的解决方法
- POI/Excel/HTML单元格公式问题
- 解决VSTO EXCEL 设置合并单元格锁定时报错问题
- NPOI读取Excel日期类型单元格返回一串数字问题
- EXCEL中更改单元格格式后不刷新问题的解决方法