这种方式为什么读取大数据csv时,文本框输出特别慢
Private Sub Command6_Click()
Dim TextLine
Dim TextString
Dim SplitStr As Variant
Dim SplitStr2 As Variant
Dim i As Long, j As Long
Dim s As String
Dim m, n As Integer
Dim a() As String
Open "DATAFILE.CSV" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
If TextString = "" Then
TextString = TextLine
Else
TextString = TextString & ";" & TextLine
End If
Loop
Close #1 ' 关闭文件。
SplitStr = Split(TextString, ";")
m = UBound(SplitStr)
For i = 0 To m
SplitStr2 = Split(SplitStr(i), ",")
n = UBound(SplitStr2)
ReDim a(0 To m, 0 To n)
For j = 0 To n
a(i, j) = SplitStr2(j)
Text1.Text = Text1.Text + a(i, j) & " "
Next j
Text1.Text = Text1.Text & vbCrLf
Next i
End Sub
Private Sub Command6_Click()
Dim TextLine
Dim TextString
Dim SplitStr As Variant
Dim SplitStr2 As Variant
Dim i As Long, j As Long
Dim s As String
Dim m, n As Integer
Dim a() As String
Open "DATAFILE.CSV" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
If TextString = "" Then
TextString = TextLine
Else
TextString = TextString & ";" & TextLine
End If
Loop
Close #1 ' 关闭文件。
SplitStr = Split(TextString, ";")
m = UBound(SplitStr)
For i = 0 To m
SplitStr2 = Split(SplitStr(i), ",")
n = UBound(SplitStr2)
ReDim a(0 To m, 0 To n)
For j = 0 To n
a(i, j) = SplitStr2(j)
Text1.Text = Text1.Text + a(i, j) & " "
Next j
Text1.Text = Text1.Text & vbCrLf
Next i
End Sub
解决方案 »
- 花了4天,写了个excel的startup宏病毒专杀. 蛋很疼. 标题要长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长长
- DateGrid保存多条记录,在线等待,急需解决?
- 各位仁兄帮帮忙,关于datagrid单元格的问题
- VB中Combox 如何不用鼠标点而用键盘操作(如回车)就自动下拉
- 关于activereport2.0以下报表格式怎样才能生成,以300分相谢
- 请问:如何给vb窗体加上背景图片?
- 用winsock控件能否实现“接收”邮件的功能?
- 请问哪位有CorelDRAW 二次开发的资料
- bcrun大哥,你好, vbRichClient5库 cWebKit组件的问题,请帮忙
- 一个问题
- 调用INET组件访问FTP报错???
- vba 截取字符串问题
哦,哦我看了,
dim i as long dim str as string, r as string dim data() as string, lines() as string open "xxx.csv" for input as #1 str = input(lof(1), 1) close #1 lines = split(str, vbcrlf) for i = lbound(lines) to ubound(lines) data = split(lines(i), ",") if i = lbound(lines) then r = data(0) & " " & data(1) & " " & data(3) & " " & data(4) else r = r & vbcrlf & data(0) & " " & data(1) & " " & data(3) & " " & data(4) end if next text1.text = r
可是总是提示下界越标呀,csv数据量很大的话有影响么??
在vb中,编了26个复选框对应csv中的26个参数,复选框选中哪个,对应将csv读出并在文本框中显示那些参数列。最后将这些数据存到excel中。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
If TextString = "" Then
TextString = TextLine
Else
TextString = TextString & ";" & TextLine
End If
Loop
Close #1 ' 关闭文件。
SplitStr = Split(TextString, ";")
m = UBound(SplitStr)
TextString = ""
For i = 0 To m - 1
SplitStr2 = Split(SplitStr(i), ",")
n = UBound(SplitStr2)
For j = 0 To n - 1
If Check1(j) Then
TextString = TextString.Text & SplitStr2(j) & " "
End If
Next j
TextString = TextString & vbCrLf
Next i
Text1 = TextString
Open "DATAFILE.CSV" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Line Input #1, TextLine ' 读入一行数据并将其赋予某变量。
TextLine = Replace(TextLine, ",", " ")
Text1 = Text1 & TextLine & vbCrlf
Loop
Close #1 ' 关闭文件。
这个操作完成后,一次性的赋值给Text控件。
Dim FileFree As Long
Dim ReadFile As String
FileFree = FreeFile
Open FileName For Input As #FileFree
ReadFile = StrConv(InputB(LOF(FileFree), #FileFree), vbUnicode)
Close #FileFree
ReadFile=Replace(ReadFile,","," ")
Text1.Text=ReadFile