Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1 / 1 / 2
Регистрация: 15.09.2015
Сообщений: 155
1

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

15.08.2016, 08:26. Просмотров 3785. Ответов 2
Метки нет (Все метки)

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


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


нужно записать все что после букв UN (связных не после самих букв U и N а именно UN) в первую колонку например А а все что после HS в колонку B ,сделал вот что :

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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

оно то записывает , но с этим добавляет в ячейки еще и HS и т д ... а также размещает как то не оч адекватно , еще и к значениям цыфры добавляет (как на картинке) как исправить ?
0
Миниатюры
Парсинг текстового файла и запись данных в Excel  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2016, 08:26
Ответы с готовыми решениями:

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A...

Парсинг текстового файла, извлечение электронных адресов и их запись в массив
Здравствуйте подскажите как можно добавить с txt файла, e-mail разделенные пробелом в список array?

Считывание и парсинг данных с текстового файла
Как правильно считать такую строку с етого файла? 3 circle 3.0 3.0 5.0 square 0.0 0.0 0.0 4.0...

Парсинг строк из огромного текстового файла из конца в начало средствами VBA Excel быстро
Хочу поделиться опытом. Была поставлена задача с помощью VBA Excel читать строки из огромного...

2
Почетный модератор
21271 / 9006 / 1080
Регистрация: 11.04.2010
Сообщений: 11,015
15.08.2016, 11:00 2
Лучший ответ Сообщение было отмечено VINDER_Z как решение

Решение

Я бы завел два списка и спокойно в двух циклах делал что нужно.
По поводу отбрасывания части строки, так же реализовано

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
        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()
2
1 / 1 / 2
Регистрация: 15.09.2015
Сообщений: 155
15.08.2016, 19:18  [ТС] 3
Оно как то не дописывает в колонки Е и F ////
0
Миниатюры
Парсинг текстового файла и запись данных в Excel  
1 / 1 / 2
Регистрация: 15.09.2015
Сообщений: 155
15.08.2016, 20:00  [ТС] 4
уже все сделал , работает отлично ...спасибо )))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2016, 20:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Парсинг файла и запись данных в БД
class Program { static void Main(string args) { var dir = new...

Считывание из текстового файла выборочных данных, сортировка данных по возрастанию и последующая запись в другой файл
Дан файл: 0.3000000E+01 0.1000000E+03 501 1 1 ...

Запись данных из текстового файла в Stringgrid
Нужно считать данные с файла, причем в каждой строчке сначала идет слово, а потом через пробелы два...

Запись текстового файла в массив данных
Кто может подсказать как правильно это сделать? Нужно считать ин-фу с текстового файла вида:...

Запись данных в переменную из текстового файла
Пишу сокет приложение в Windows Form, есть textBox1, в нём должен содержатся IP сервера к которому...

Парсинг данных из файла Word и сохранение результата в Excel
Уважаемые форумчане! Вот посоветовали задать вопрос в этой теме. Суть решаемой мной задачи: есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.