2014-01-15 65 views
-1

下面是我的代码来解析文本文件的数据..接下来我需要做的就是将它作为一个csv文件执行..什么是保存文本文件的代码一个csv文件类型?预先感谢您的帮助。保存为csv文件使用vb6

Private Sub cmd_parse_Click() 
Dim i As Long 
Dim ff As Integer 
Dim sText As String 


Dim myFSO, ts, ts2, ft2, ft1, r 
Set myFSO = CreateObject("Scripting.FileSystemObject") 
Set ts = myFSO.GetFile(txtfilename.Text) 
Set ft1 = ts.OpenAsTextStream(ForReading, TristateUseDefault) 
List1.AddItem Format(Now, "YYYY-MM-DD HH:MM:SS") & " Time start" 


Do Until ft1.AtEndOfStream 
    a = ft1.ReadLine 
    r = r + 1 
    Text1.Text = r 
    a = Split(a, ",") 

     For i = 0 To UBound(a) 
      Text2.Text = a(i) 
      If Text2.Text = "Date Time" Then 
        ListView1.ListItems.Add(1).Text = Text2.Text 
       End If 

       If Text2.Text = "Date Time" Then 
        Text2.Text = "" 
       End If 
       If Text2.Text = a(1) Then 
        ListView2.ListItems.Add(1).Text = a(1) 
        GoTo 1 
       End If 
       If Not IsNumeric(Text2.Text) Then 
        ListView1.ListItems.Add(1).Text = a(i) 
       Else 
       ListView2.ListItems.Add(1).Text = a(i) 
        ' Stop 
      End If 
1 

     Next i 
    DoEvents 
Loop 
List1.AddItem Format(Now, "YYYY-MM-DD HH:MM:SS") & " Time end" 

txtfilename.Text = "" 
End Sub 
+0

将数据保存为CSV文件,你简单的添加所有在你将它保存到文件之前用逗号分隔的数据......该文件是一个纯文本文件..给文件名作为扩展名.csv以表明它是一个csv文件 – Hrqls

+3

你能给我一个示例代码? – bebebe

回答

1

你的示例代码应该做什么?

一些意见:

定义一些变量没有类型,这会让他们变体..它始终是更好地变量声明为特定类型的

Dim myFSO, ts, ts2, ft2, ft1, r 

它第一次在文件中读取并将每行存储在一个变量中 然后它将linedata分割成每个逗号,所以我假设它读取一个csv文件? 你正在使用相同的变量来存储完整的行,以及存储包含每个项目的数组......我从来没有尝试过,并且如果这能够工作,我感到惊讶..但是你应该定义使用一个变量来保存完整的字符串而另一个变量来保存阵列

a = ft1.ReadLine 
r = r + 1 
Text1.Text = r 
a = Split(a, ",") 

你可以声明和数组如下:

dim strArray() as string 

,然后将拆分命令可能是:

strArray = Split(a, ",") 

然后您循环每个csv项目并执行一些操作:

您将csv项目存储在文本框中。为什么?你已经把它作为一个(我)..它复制到文本框只是延缓了进程

您再检查,如果该项目是“日期时间”,如果那是真的,那么您添加到列表框中

 If Text2.Text = "Date Time" Then 
     ListView1.ListItems.Add(1).Text = Text2.Text 
     End If 

接下来再次检查该项目是否为“日期时间”,如果这是真的,那么您将清空文本框......为什么不用相同的“如果是”呢?

那么你是否依然文本2包含相同的数据,这永远是那么除非数据是“日期时间” ...所以你为什么不使用“其他人”与您的“if then” ...这是什么是“其他”是

那么你检查数据nummeric,但用是否是nummeric执行相同的动作?

Do Until ft1.AtEndOfStream 
     a = ft1.ReadLine 
     r = r + 1 
     Text1.Text = r 
     strArray = Split(a, ",") 
     For i = 0 To UBound(strArray) 
     If strArray(i) = "Date Time" Then 
      ListView1.ListItems.Add(1).Text = strArray(i) 
      Text2.Text = "" 
     Else 
      ListView2.ListItems.Add(1).Text = strArray(i) 
      Text2.Text = strArray(i) 
      GoTo 1 
     End If 
     ListView1.ListItems.Add(1).Text = strArray(i) 
1 
     Next i 
     DoEvents 
    Loop 

这仍然是一些奇怪的代码,因为它:

     If Not IsNumeric(Text2.Text) Then 
         ListView1.ListItems.Add(1).Text = a(i) 
         Else 
         ListView2.ListItems.Add(1).Text = a(i) 
         ' Stop 
         End If 
    

    在循环清理你的代码(但是仍然不知道它做什么),它可能如下所示后

  • 将csv项目添加到列表框
  • 再次将csv项目添加到列表框中(除非csv项目是“日期时间”)
  • 显示Text2中的csv项目。文字(除了当CSV项目是“日期时间”) -

BTW将数据写入到可以使用.WriteLine()的文件:reference