Я делаю что-то похожее в приложении "ежедневные хлопоты", которое я создал для себя. Я пишу DataTable
для отдельных текстовых файлов, но основная предпосылка должна быть такой же. Подобно тому, что предлагал @NeverHopeless, я настроил отдельный метод для создания необходимых мне файлов, чтобы я мог перебирать DataTable
, и для каждого уникального идентификатора я выполняю этот метод. Следующее, очевидно, очень упрощено и должно быть изменено в соответствии с вашими требованиями, но все основные элементы должны быть там:
Dim MyData As DataTable = GetMyData()
Dim tempdossier As String = Now.ToString("yyyyMMddHHmmssffffzz")
For Each Row As DataRow In MyData.Rows
If Not IsDBNull(Row("dossiersoort")) AndAlso Not String.IsNullOrEmpty(Row("dossiersoort").ToString) Then
If Row("dossiersoort").ToString <> tempdossier then
Dim dossierrows() As DataRow
dossierrows = MyData.Select("dossiersoort = '" & Row("dossiersoort").ToString & "'")
CreateExcelFile(dossierrows)
End If
tempdossier = Row("dossiersoort").ToString
Else
tempdossier = Now.ToString("yyyyMMddHHmmssffffzz")
End If
Next Row
Переменная tempdossier
предназначена только для предотвращения дублирования файлов. Я использую значение «timestamp» (вычитаемое до десятитысячной доли секунды) как несколько надежный способ получить уникальное значение в случае пустых данных.
Метод CreateExcelFile
в основном создает пустой файл Excel, а затем перебирает DataRows
в вашем массиве (который должен быть только с тем же значением dossiersoort
), чтобы заполнить файл. Из вашего OP, похоже, вы уже знаете, как на самом деле создать / заполнить файл, поэтому я не буду вдаваться в подробности. Вы можете легко пройти через массив с помощью простого цикла For...Next
, используя значение Integer
(For dossier As Integer = 0 To dossierrows.GetUpperBound(0)
или что-то в этом роде).
Этот метод может быть Function
, возвращающим значение Boolean
или File.IO
, чтобы убедиться, что файл Excel действительно был создан правильно, или простым Sub
с проверкой, которая происходит после того, как он возвращает выполнение в вызывающий метод.