Я пытаюсь написать строку в CSV-файл, но не могу ее отобразить. Мне удалось сделать это в VBA, но при записи на VB.net он не работает.Запись строки в новый .csv в VB.net
Сначала я создаю файл и устанавливаю заголовки для каждого столбца. После этого я получаю информацию о каждом обязательном атрибуте и записываю его в строку s. Все, что я хочу сделать, это написать строку в CSV-файл, чтобы каждый атрибут находился в правом столбце под правильным заголовком. Каждый раз, когда строка s просто должна быть в новой строке.
Это то, что у меня есть до сих пор (я вырезал некоторые фрагменты кода, поэтому некоторые синтаксисы могут выглядеть некорректно). Что я делаю неправильно или не хватает?
Sub Main()
Dim sOutput As String
' Create a header for the output file
sOutput = ("Level,Occurrence Name,Reference Name,Object type, Visibility, Path" & vbLf)
If Occs.Count > 0 Then
For i = 1 To Occs.Count
iLevel = 0
curOcc = Occs.Item(i)
GetOccurrenceData(curOcc, sOutput, oSel, False, iLevel)
Next
End If
' Write the output string to a file
Dim sPath As String
Dim bWrite As Boolean
sPath = ("C:\temp\data3.csv")
bWrite = WriteFile(sPath, sOutput)
End Sub
Sub GetOccurrenceData(curOcc As VPMOccurrence, s As String, sel As Selection, ByVal bParentHidden As Boolean, ByVal iParentLevel As Integer)
'CODE TO GET DATA REMOVED AS IRRELEVANT
' Append the output string with the data for the current occurrence.
s = (s & curLevel & "," & sName & "," & sRefName & "," & sType & "," & sVisibility & vbLf)
' Repeat this data gathering procedure on any children the current occurrence may have.
Occs = curOcc.Occurrences
If Occs.Count > 0 Then
For i = 1 To Occs.Count
GetOccurrenceData(Occs.Item(i), s, sel, bChildrenInheritNoShow, curLevel)
Next
End If
Показать функцию "WriteFile". – PKatona
Существует много возможностей для улучшения. Вместо того, чтобы пытаться сделать одну длинную строку, было бы быстрее создать List (String), где каждый элемент является строкой. 'GetOccurrenceData' может быть функцией, возвращающей строку за раз, или просто добавлением в список. Есть лучшие способы форматирования вывода – Plutonix
Я добавил пример версии вашего кода в StringBuilder в моем ответе ниже, что-то конкатенирующее множество строк, StringBuilder более эффективен и чист. –