洛可可是富二代:MSFlexGrid与Excel

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 07:12:00
MSFlexGrid与Excel (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!搞定了!快吧?!