Парсинг текстового файла и запись данных в Excel - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

есть текстовый док с такими строками :

HS oper-209 UN Linux HS oper-203 UN Linux

нужно записать все что после букв UN (связных не после самих букв U и N а именно UN) в первую колонку например А а все что после HS в колонку B ,сделал вот что :
Листинг программы
  1. Imports System
  2. Imports System.IO
  3. Imports System.Text
  4. Public Class Form1
  5. Dim appExcel As Object
  6. Dim I As Integer = 0
  7. Dim path As String = "D:\1.txt"
  8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  9. For Each line As String In File.ReadLines(path)
  10. RichTextBox1.AppendText(line & vbNewLine)
  11. Dim tmp() As String = Split(line, " ")
  12. If tmp(0) = "HS" Then
  13. appExcel = CreateObject("Excel.Application")
  14. appExcel.Workbooks.Open("C:\1.xlsx")
  15. appExcel.Visible = False
  16. With appExcel.ActiveSheet
  17. .Range("A" & I + 1).Value = line & I
  18. End With
  19. appExcel.Workbooks(1).Close(True)
  20. appExcel.Quit()
  21. I += 1
  22. ElseIf tmp(0) = "UN" Then
  23. appExcel = CreateObject("Excel.Application")
  24. appExcel.Workbooks.Open("C:\1.xlsx")
  25. appExcel.Visible = False
  26. With appExcel.ActiveSheet
  27. .Range("B" & I + 1).Value = line & I
  28. End With
  29. appExcel.Workbooks(1).Close(True)
  30. appExcel.Quit()
  31. I += 1
  32. End If
  33.  
  34. Next
  35. End Sub
  36. Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
  37. End Sub
  38. Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs)
  39. End Sub
  40. End Class
оно то записывает , но с этим добавляет в ячейки еще и HS и т д ... а также размещает как то не оч адекватно , еще и к значениям цыфры добавляет (как на картинке) как исправить ?

Решение задачи: «Парсинг текстового файла и запись данных в Excel»

textual
Листинг программы
  1.         Dim Data() As String = IO.File.ReadAllLines("D:\1.txt", System.Text.Encoding.Default)
  2.         Dim HS, UN As New List(Of String)
  3.         For Each Line As String In Data
  4.             If Line.Split()(0) = "HS" Then
  5.                 HS.Add(String.Join(" ", Line.Split().Skip(1).ToArray))
  6.             End If
  7.             If Line.Split()(0) = "UN" Then
  8.                 UN.Add(String.Join(" ", Line.Split().Skip(1).ToArray))
  9.             End If
  10.         Next
  11.         Dim AppExcel As Object
  12.         AppExcel = CreateObject("Excel.Application")
  13.         AppExcel.Workbooks.Open("D:\1.xls")
  14.         AppExcel.Visible = False
  15.         With AppExcel.ActiveSheet
  16.             For I As Integer = 0 To UN.Count - 1
  17.                 .Range("A" & I + 1).Value = UN(I)
  18.             Next
  19.             For I As Integer = 0 To HS.Count - 1
  20.                 .Range("B" & I + 1).Value = HS(I)
  21.             Next
  22.         End With
  23.         AppExcel.Workbooks(1).Close(True)
  24.         AppExcel.Quit()
  25.         AppExcel = Nothing
  26.         GC.Collect()
  27.         GC.WaitForPendingFinalizers()

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут