我的这部分代码如下,请指教,谢谢!Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim ColCount As Long, RowCount As Long
Dim ArrTemp1() As String
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Open("c:\Match.csv")
Set xlSheet = xlBook.Worksheets("sheet4")ColCount = xlSheet.UsedRange.Cells.Columns.Count '得到总列
RowCount = xlSheet.UsedRange.Cells.Rows.Count    '得到总行ReDim ArrTemp1(RowCount - 1, ColCount)For i = 2 To RowCount
 
  For j = 1 To ColCount
   ArrTemp1(i - 1, j) = xlSheet.Cells(i, j) '将所有信息放到ArrTemp这个数据中
  Next j
 
Next ixlBook.Close
xlApp.Quit
Set xlApp = Nothing

解决方案 »

  1.   

    为什么用数组,用recordset不是很快吗
      

  2.   

    我试过了,用recordset一样慢,感觉就是不好,
    重要耗时是在引用声明处,不知道为什么那么慢
      

  3.   

    Excel初始化需要时间,循环中用Cell访问也是耗时的
    所以不赞成使用Excel读取csv文件,其实楼主只要直接用读取文本格式的方法
    逐行数据读出来,用split就可以加载到数组中了,速度极快
      

  4.   

    非常感谢,还请问如果输出以EXCEL格式打开的CSV文件,有什么类似的方法吗
      

  5.   

    这样试试
    Private Sub cmdReadXLS_Click()
          Set dgData.DataSource = Read_Excel(App.Path & "\" & "test.xls")
          Set obj = Nothing
    End SubPublic Function Read_Excel _
             (ByVal sFile _
              As String) As ADODB.Recordset      On Error GoTo fix_err
          Dim rs As ADODB.Recordset
          Set rs = New ADODB.Recordset
          Dim sconn As String      rs.CursorLocation = adUseClient
          rs.CursorType = adOpenKeyset
          rs.LockType = adLockBatchOptimistic      sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile
          rs.Open "SELECT * FROM [sheet1$]", sconn
          Set Read_Excel = rs
          Set rs = Nothing
          Exit Function
    fix_err:
          Debug.Print Err.Description + " " + _
                      Err.Source, vbCritical, "Import"
          Err.Clear
    End FunctionPublic Function Read_Text_File() As ADODB.Recordset      Dim rs As ADODB.Recordset
          Set rs = New ADODB.Recordset
          Dim conn As ADODB.Connection
          Set conn = New ADODB.Connection
          conn.Open "DRIVER={Microsoft Text Driver (*.txt; *.csv)};" & _
                      "DBQ=" & App.Path & ";", "", ""      rs.Open "select * from [test#txt]", conn, adOpenStatic, _
                      adLockReadOnly, adCmdText
          Set Read_Text_File = rs
          Set rs = Nothing
          Set conn = Nothing
    End FunctionPrivate Sub cmdReadTXT_Click()
          Set dgData.DataSource = obj.Read_Text_File
          Set obj = Nothing
    End Sub