MSFlexGrid与Excel

来源:百度文库 编辑:神马文学网 时间:2024/04/25 16:24:28
(2009-05-22 10:38:53)
标签:vb msflexgrid 导入 excel 快速 it
目前正在进行的项目中,碰到一个难题:
那就是msflexgrid与Excel数据的相互导入过程中,速度慢的问题。
如果数据量不是很大的话,采用网上常举例的的方式还可以,但是一旦数据量很大,打到几万甚至几十万的时候,那个速度简直是慢得离谱,你简直不敢相信这是电脑在做事情。
首先讲讲传统方案:
1、  按照Excel逐格填充的方法:
For i = 1 To TotalCount
MSFlexGrid1.Row = i
For j = 0 To 14
MSFlexGrid1.Col = j
‘下面或者MSFlexGrid1.TextMatrix(i, j)
xlsheet.Range(Chr(65 + j) + CStr(i + 2)).Value = MSFlexGrid1.Text
Next j
Next I
这个就是我讲的最慢的方法。
处理超过100K的数据用了十几秒钟,慢!太慢!实在是太慢了!
昨天项目经理找我聊了一下清况,我将我碰到的问题告诉她,她很奇怪(她不懂VB),这里已经完全是电脑在处理数据的啊,怎么会那么慢呢?
她还尝试用我已经导出的数据经过在Excel和Textbook之间相互复制粘贴来证明The speed of computer.
那确实相当的快,这个马上给了我一个启发:剪贴板。
对,我所说的快的处理方法就是采用剪贴板。
2、  利用剪贴板复制粘贴。
Clipboard.Clear                                         'Clear the Clipboard
With MSFlexGrid1                                        'Select Full Contents (You could also select partial content)
.Col = 0                                            'From first column
.Row = 0                                            'From first Row (header)
.ColSel = .Cols - 1                                 'Select all columns
.RowSel = .Rows - 1                                 'Select all rows
Clipboard.SetText .Clip                             'Send to Clipboard
End With
With xlapp.ActiveWorkbook.ActiveSheet
.Range("A1").Select                                 'Select Cell("A1) (will paste from here, to different cells)
.Paste                                              'Paste clipboard contents
End With
这下子速度快多了:Ctrl+A, Ctrl+C, Ctrl+V, OK!搞定了!快吧?!