2016-10-27 3 views
0

Как использовать код VB.NET для генерации заголовка .csv только для первой строки? Ниже приведен код, который я пробовал, но он написал сверху и столбец .csv-файла.Как сгенерировать заголовок .csv только в первой строке?

Try 
    My.Computer.FileSystem.WriteAllText("C:\bin\Debug\TimerTest.csv", 
     "Date and Time,Tag Name, Value" & vbCrLf & 
     timeUtc & "," & Tag_name_Read & "," & itemValues(0).Value.ToString, True) 
    'Date and Time, Tag Name, Value are my header. they are suppose to be on the first line 

Catch ex As Exception 
End Try 

If daServerMgt.IsConnected Then 
    daServerMgt.Disconnect() 
End If 

Update Link Showing the csv file)

Я просто хочу, заголовок (дата и время | Tag Name | Value) на вершине, я не хочу, чтобы на колонке. Он добавляет его из-за My.Computer.FileSystem.WriteAllText (File, Text, true)

Как исправить это?

+0

Я не думаю, что то, что вы делаете это писать истинный файл CSV. Почему бы вам не использовать определенный код, например ** lumenworks ** csv library? –

+0

Кажется, что это должно сработать. @ Smoky2016, не могли бы вы обновить свой вопрос, чтобы показать нам точное содержимое файла CSV после запуска кода? – MJH

+0

Пожалуйста, никогда не делайте 'Catch ex As Exception' - это плохо. Поместите код в 'Try' /' Catch', если вы поймаете определенное исключение, из которого вы можете восстановить. – Enigmativity

ответ

0

Я просто нашел решение, добавив текст заголовка в подстроку Run_Click. Это, в свою очередь, добавит текст в существующий файл и поместит его в первую строку (строку заголовка) при каждом запуске события. Это работает!

Ниже приведен код, который я использовал:

Private Sub Run_Click(sender As Object, e As EventArgs) Handles Run.Click 
    Dim Path As String = "C:\bin\Debug\TimerTest.csv" 

    My.Computer.FileSystem.WriteAllText(Path, "Date and Time, Tag Name, Value", False) 'add 
    Timer1.Enabled = True 
End Sub 
0

Помимо таких вопросов, как упомянутый один из упоминавшихся @Enigmativity, в вашем коде не было ничего плохого.

Моя старая машина врезалась совсем недавно, и я еще не установлена ​​Visual Studio на моей новой машине, но я создал файл в моей C:\Temp папке под названием TimerTest.vb, со следующим содержанием:

Imports System 

Module Module1 
    Public Structure Struct1 
     Public Value As Integer 
     Sub New(ByVal _Value As Integer) 
      Value = _Value 
     End Sub 
    End Structure 

    Sub Main() 
     Dim timeUtc As DateTime = DateTime.Now() 
     Dim Tag_name_Read As String = "FortyTwo" 
     Dim itemValues = New Struct1() { New Struct1(42), New Struct1(43), New Struct1(44)} 

     Try 
      'My.Computer.FileSystem.WriteAllText("C:\bin\Debug\TimerTest.csv", 
      My.Computer.FileSystem.WriteAllText("C:\Temp\TimerTest.csv", 
       "Date and Time,Tag Name, Value" & vbCrLf & 
       timeUtc & "," & Tag_name_Read & "," & itemValues(0).Value.ToString, True) 
      'Date and Time, Tag Name, Value are my header. they are suppose to be on the first line 

     Catch ex As Exception 
     End Try 

     'If daServerMgt.IsConnected Then 
     ' daServerMgt.Disconnect() 
     'End If 
    End Sub 
End Module 


я составитель, выполнив следующую инструкцию в окне командной строки (vbc.exe «s родительская папка уже находится в моем %PATH%):

vbc C:\Temp\TimerTest.vb 


После того как я побежал в результате TimerTest.exe файл, TimerTest.csv файл был создан в C:\Temp, со следующим содержанием:

Date and Time,Tag Name, Value<br> 
10/27/2016 9:07:31 PM,FortyTwo,42 


Когда я дважды щелкните файл TimerTest.csv, он открывается в Excel без какого-либо вопроса:

enter image description here


Поэтому, про blem должен находиться в другом месте вашего кода. Чтобы облегчить нам помощь, предоставьте Minimal, Complete, and Verifiable example, что позволит решить проблему.