共有3万多行,每行10多列,数据量很大。还有,就是这样的一个TXT文件怎么导到Gird中?

解决方案 »

  1.   

    Sub SaveFile(FileName As String)
    '保存文件
        Dim FileID As Long, ConTents As String
        Dim a As Long, B As Long
        Dim RowMax As Long, ColMax As Long
        Dim T1 As Date, T2 As Date
        Dim TmpProVal As Long, DltWidth As Single
        Dim NewVal As Long, OleVal As Long
        
        With MSHFlexGrid1(0)
        .Redraw = False: FileID = FreeFile
        RowMax = .Rows - 1: ColMax = .Cols - 1
        Screen.MousePointer = 11: T1 = Timer()
        Open FileName For Output As #FileID
             ConTents = RowMax + 1
             Print #FileID, ConTents
             For a = 1 To RowMax
                 .Row = a: .Col = 1
                 .RowSel = a: .ColSel = ColMax
                 ConTents = .Clip
                 Print #FileID, ConTents
                 NewVal = (a * TmpProVal) \ RowMax
                 If CBool(NewVal - OleVal) Then
                       ME.CAPTION=FORMAT$((NewVal*100)/RowMax,"00") & "%"
                 End If
             Next a
        Close #FileID
        .Redraw = True
        Screen.MousePointer = 0
        End With
    End Sub
      

  2.   

    Sub OpenFile(FileName As String)
        Dim InputID As Long, FileID As Long
        Dim GridInput As String, GridRowMax As Long
        Dim TmpProVal As Long, DltWidth As Single
        Dim CollMax As Long, AddSum As String
        Dim EndRow As Long, AddFlag As Boolean
        Dim DltAdd As Long, OleTmp As Long
        Dim KeyTab As String, KeyEnter As String
        Dim ValMax As Long, ColMax As Long
        
        On Error Resume Next    With MSHFlexGrid1(0)
        .Visible = False: .Redraw = False
        Screen.MousePointer = 11
        Err.Clear: SetAttr FileName, 0
        If Err.Number <> 0 Then '如果文件不存在
           Exit Sub
        End If
        Screen.MousePointer = 11
        .Visible = False: .Redraw = False
        InputID = 0: FileID = FreeFile: AddFlag = False: DltAdd = 25
        .FixedRows = 0: .FixedCols = 0: KeyTab = Chr(vbKeyTab): KeyEnter = Chr(13)
        .Rows = 1: .Cols = 21: ValMax = 50: ColMax = 20
        Open FileName For Input As #FileID
             Do While Not EOF(FileID) ' 循环至文件尾。
                Line Input #FileID, GridInput
                If InputID = 0 Then
                   GridRowMax = CLng("0" & GridInput)
                   If GridRowMax < 2 Then GridRowMax = 2
                   .Rows = GridRowMax: DltWidth = CollMax / ValMax
                Else
                   If AddFlag Then
                      AddSum = AddSum & KeyEnter & InputID & KeyTab & GridInput
                   Else
                      AddSum = InputID & KeyTab & GridInput: AddFlag = True
                   End If
                   '------------------------------------------------------
                   If InputID Mod DltAdd = 0 Then
                      .Row = InputID - DltAdd + 1: .Col = 0
                      .RowSel = InputID: .ColSel = ColMax
                      .Clip = AddSum: AddSum = ""
                      EndRow = InputID: AddFlag = False
                   End If
                   '-----------------------------------------------------
                   TmpProVal = (InputID * 100) \ GridRowMax
                   If TmpProVal - OleTmp > 0 Then
                         ME.CAPTION=FORMAT$(TMPPROVAL * 100,"00") & "%"
                         OleTmp = TmpProVal
                   End If
                   '-----------------------------------------------------
                End If
                InputID = InputID + 1
             Loop
             '--------------------------------------------------------
             If InputID - EndRow > 1 Then
                .Row = EndRow + 1: .Col = 0
                .RowSel = GridRowMax - 1
                .ColSel = ColMax
                .Clip = AddSum
                AddSum = ""
             End If
        Close #FileID
        .FixedRows = 1: .FixedCols = 2: ShowNum = False
        ShowRowID = 1: Call ShowGrid
        Unload Oscoll: DoEvents
        .Redraw = True: .Visible = True
        Screen.MousePointer = 0
        End With
    End Sub
      

  3.   

    这个是 MSFlexGrid,你修改一下也可以用的Public Sub OutDataToText(Flex As MSFlexGrid) 
        Dim s As String
        Dim i As Integer
        Dim j As Integer
        Dim k As Integer
        Dim strTemp As String
        On Error GoTo Ert
        Me.MousePointer = 11
        On Error Resume Next
        DoEvents
        Dim FileNum As Integer
        FileNum = FreeFile
        Open "d:\aa.txt" For Output As #FileNum
            With Flex
                k = .Rows
                For i = 0 To k - 1
                    strTemp = ""
                    For j = 0 To .Cols - 1
                        DoEvents
                        strTemp = strTemp & .TextMatrix(i, j) & ","
                    Next j
                    Print #FileNum, Left(strTemp, Len(strTemp) - 1)
                Next i
            End With
        Close #FileNum
        Me.MousePointer = 0
        MsgBox "导出成功"
    Ert:
        MsgBox Err.Description
        Me.MousePointer = 0
    End Sub