Парсинг текстового файла и запись данных в Excel - Visual Basic .NET
Формулировка задачи:
есть текстовый док с такими строками :
оно то записывает , но с этим добавляет в ячейки еще и HS и т д ... а также размещает как то не оч адекватно , еще и к значениям цыфры добавляет (как на картинке) как исправить ?
HS oper-209 UN Linux HS oper-203 UN Linux
нужно записать все что после букв UN (связных не после самих букв U и N а именно UN) в первую колонку например А а все что после HS в колонку B ,сделал вот что :
Листинг программы
- Imports System
- Imports System.IO
- Imports System.Text
- Public Class Form1
- Dim appExcel As Object
- Dim I As Integer = 0
- Dim path As String = "D:\1.txt"
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- For Each line As String In File.ReadLines(path)
- RichTextBox1.AppendText(line & vbNewLine)
- Dim tmp() As String = Split(line, " ")
- If tmp(0) = "HS" Then
- appExcel = CreateObject("Excel.Application")
- appExcel.Workbooks.Open("C:\1.xlsx")
- appExcel.Visible = False
- With appExcel.ActiveSheet
- .Range("A" & I + 1).Value = line & I
- End With
- appExcel.Workbooks(1).Close(True)
- appExcel.Quit()
- I += 1
- ElseIf tmp(0) = "UN" Then
- appExcel = CreateObject("Excel.Application")
- appExcel.Workbooks.Open("C:\1.xlsx")
- appExcel.Visible = False
- With appExcel.ActiveSheet
- .Range("B" & I + 1).Value = line & I
- End With
- appExcel.Workbooks(1).Close(True)
- appExcel.Quit()
- I += 1
- End If
- Next
- End Sub
- Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
- End Sub
- Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs)
- End Sub
- End Class
Решение задачи: «Парсинг текстового файла и запись данных в Excel»
textual
Листинг программы
- Dim Data() As String = IO.File.ReadAllLines("D:\1.txt", System.Text.Encoding.Default)
- Dim HS, UN As New List(Of String)
- For Each Line As String In Data
- If Line.Split()(0) = "HS" Then
- HS.Add(String.Join(" ", Line.Split().Skip(1).ToArray))
- End If
- If Line.Split()(0) = "UN" Then
- UN.Add(String.Join(" ", Line.Split().Skip(1).ToArray))
- End If
- Next
- Dim AppExcel As Object
- AppExcel = CreateObject("Excel.Application")
- AppExcel.Workbooks.Open("D:\1.xls")
- AppExcel.Visible = False
- With AppExcel.ActiveSheet
- For I As Integer = 0 To UN.Count - 1
- .Range("A" & I + 1).Value = UN(I)
- Next
- For I As Integer = 0 To HS.Count - 1
- .Range("B" & I + 1).Value = HS(I)
- Next
- End With
- AppExcel.Workbooks(1).Close(True)
- AppExcel.Quit()
- AppExcel = Nothing
- GC.Collect()
- GC.WaitForPendingFinalizers()
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д