2015-05-23 2 views
-2

Мне нужно создать несколько текстовых файлов в vb.net на основе значений, введенных в электронную таблицу. Каждый текстовый файл будет называться «valuename.txt».Возможно ли выпустить переменную в VB.net, используя значения из массива?

я заполнить массив с именами значений, как они вошли:

issues(j) = Grid1.Cells(1, j).Value 

Теперь мне нужно открывать текстовые файлы с их именами. Я хотел бы сделать что-то вдоль линий:

Dim Filename As String = "C:\" & Grid1.Cells(1, j).Value & ".txt" 

Dim issues(j) As New System.IO.StreamWriter(Filename) 

Когда я ввожу это в Visual Studio, он говорит, что не любит:

issues(j) 

У меня есть какие-либо другие варианты?

+1

Я уверен, что вы можете описать «это говорит, что это не нравится» намного лучше. –

+0

'System.IO.StreamWriter' возвращает объект streamwriter, и вы пытаетесь присвоить его (по-видимому) элементу строкового массива. См. [Класс StreamWriter] (https://msdn.microsoft.com/en-us/library/system.io.streamwriter (v = vs.110) .aspx) для использования, включая пример кода. – Plutonix

+0

В общем случае вы не можете «Dim issues (j)», а скорее «Dim issues()». Однако, если я вижу, что вы хотите сделать, вы скорее хотите, чтобы 'issues()' являлся массивом, содержащим имена файлов для передачи в 'StreamWriter'. Поэтому 'issues()' не является 'StreamWriter', а массивом, содержащим вход для' StreamWriter'. –

ответ

2

Кажется, что код, который вы опубликовали, находится внутри цикла for, где j является переменной подсчета.

Вы уже строите имя файла из значений ячеек, так просто объявить StreamWriter как новые переменные и использовать его:

For j = 0 To Grid1.Rows.Count - 1 'Assumed by me 

    'Create the filename for the current row 
    Dim Filename As String = "C:\" & Grid1.Cells(1, j).Value & ".txt" 

    'The Using block makes sure that the ressources used by the streamwriter are disposed again. 
    'It is equivalent as Dim sw As New IO.Streamwriter, but Using should be preferred 
    Using sw As New IO.StreamWriter(Filename) 
     'Use the streamwriter to write the data 
    End Using 

    'If you additionally want to store the values in an array for whatever reason  
    issues(j) = Grid1.Cells(1, j).Value 
Next 

Вашего Dim issues(j) утверждение не имеет никакого смысла.

Для добавления данных в существующий файл, используйте перегрузку конструктора StreamWriter:

Using sw As New IO.StreamWriter(Filename, True) 

Второй параметр определяет, если данные должны быть добавлены к файлу.

+0

Спасибо. Мне нужно использовать StreamWriter для записи значений в уникальные файлы в течение дня. Могу ли я просто «Использовать sw As New IO.StreamWriter (Имя файла) каждый раз, когда мне нужно добавить значения в один из файлов? –

+0

@alicemeade См. Редактирование моего ответа. – Jens

1

Вы можете использовать Using объявить новый StreamWriter:

Dim Filename As String = "C:\" & Grid1.Cells(1, j).Value & ".txt" 

Using fsw As New System.IO.StreamWriter(Filename) 
    'Do Something 
End Using 

Но если вы настаиваете, чтобы использовать список StreamWriter (я не знаю, почему), то вы можете сделать что-то вроде этого:

Dim fsw As New List(Of System.IO.StreamWriter) 
fsw(j) = New System.IO.StreamWriter(Filename) 
'Do Something 
fsw(j).Close 
fsw(j).Dispose 
Смежные вопросы