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

转载于:https://www.cnblogs.com/qshuwang/archive/2013/01/12/2857847.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值