vb.net 读取text内容写入csv
Imports System.Text
Imports Microsoft.VisualBasic.FileIO
Imports System.Text.RegularExpressions
Imports Shell32
Imports Microsoft.VisualBasic
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Call anyTXT2CSV(TextBox1.Text)
End Sub
Protected Sub anyTXT2CSV(ByVal filePath As String)
If String.IsNullOrEmpty(filePath) Then
Label1.Text = "请选择文件地址"
ElseIf System.IO.File.Exists(filePath) Then
Label1.Text = "您选择的文件地址不存在"
Else
Label1.Text = ""
Dim objRegExp As New Regex("<.*>=.*")
Dim reg As New Regex(".*<REC>.*")
Dim fs = Microsoft.VisualBasic.FileIO.FileSystem.GetFiles(filePath, SearchOption.SearchTopLevelOnly, "*.txt")
Dim firstLines() As String = IO.File.ReadAllLines(fs.First, Encoding.GetEncoding("gb2312"))
Dim file As System.IO.FileStream
file = System.IO.File.Create("D:\TF\CSV\D33-20130110-01.csv")
file.Close()
Dim dot As String = ","
Dim key = "文件名,资料类型,类别,正题名,副题名,作者,单位,分类号,摘要,国别/地区,关键词,剧种,话剧,流派,其他戏曲,其他关键词,资料简介,出处,"
My.Computer.FileSystem.WriteAllText("D:\TF\CSV\D33-20130110-01.csv", key & vbLf, True)
For Each fl As String In fs
Dim lines() As String = IO.File.ReadAllLines(fl, Encoding.GetEncoding("gb2312"))
Dim coll As New Collection()
Dim eleKey As String = ""
For Each lin In lines
If reg.IsMatch(lin) Then
Continue For
End If
If objRegExp.IsMatch(lin) Then
eleKey = lin.Substring(1, lin.IndexOf("=") - 2)
coll.Add(lin.Substring(lin.IndexOf("=") + 1), eleKey)
End If
If Not objRegExp.IsMatch(lin) Then
Dim con = coll.Item(eleKey)
coll.Remove(eleKey)
coll.Add(con & lin, eleKey)
End If
Next
Dim value = element(coll)
My.Computer.FileSystem.WriteAllText("D:\TF\CSV\D33-20130110-01.csv", value & vbLf, True)
Next
Label1.Text = "文件转换成功"
End If
End Sub
Function element(ByVal coll As Collection) As String
Dim lin = New StringBuilder()
If coll.Contains("文件名") Then
lin.Append(coll.Item("文件名").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("资料类型") Then
lin.Append(coll.Item("资料类型").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("类别") Then
lin.Append(coll.Item("类别").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("正题名") Then
lin.Append(coll.Item("正题名").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("副题名") Then
lin.Append(coll.Item("副题名").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("作者") Then
lin.Append(coll.Item("作者").ToString.Replace(",", " ") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("单位") Then
lin.Append(coll.Item("单位").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("分类号") Then
lin.Append(coll.Item("分类号").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("摘要") Then
lin.Append(coll.Item("摘要").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("国别/地区") Then
lin.Append(coll.Item("国别/地区").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("关键词") Then
lin.Append(coll.Item("关键词").ToString.Replace(";", " ") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("剧种") Then
lin.Append(coll.Item("剧种").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("话剧") Then
lin.Append(coll.Item("话剧").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("流派") Then
lin.Append(coll.Item("流派").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("其他戏曲") Then
lin.Append(coll.Item("其他戏曲").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("其他关键词") Then
lin.Append(coll.Item("其他关键词").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("资料简介") Then
lin.Append(coll.Item("资料简介").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
If coll.Contains("出处") Then
lin.Append(coll.Item("出处").ToString.Replace(",", ",") & ",")
Else
lin.Append(" ,")
End If
Return lin.ToString
End Function
Dim shlShell As Shell32.Shell
Dim shlFolder As Shell32.Folder
Private Const BIF_RETURNONLYFSDIRS = &H1
Private Sub selectFoder_Click(sender As System.Object, e As System.EventArgs) Handles selectFoder.Click
If shlShell Is Nothing Then
shlShell = New Shell32.Shell
End If
shlFolder = shlShell.BrowseForFolder(0, "请选择文件夹", 0)
If Not shlFolder Is Nothing Then
TextBox1.Text = Trim(shlFolder.Items.Item.Path)
End If
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Label3.Text = "使用前请创建地址:D:\TF\csv"
End Sub
End Class