У меня есть код, который создает CSV-файл (с заголовками), который содержит поля, идентифицирующие пиксельные местоположения точек интереса в выбранных изображениях. К сожалению, иногда возникают дубликаты, которые вызывают проблемы позже в моем производственном процессе. Я планирую решить эту проблему, чтобы открыть файл CSV посреди приложения, прочитать данные в таблицу данных, отсортировать таблицу данных с представлением данных, используя 4 ключа сортировки (я использую по умолчанию Column1, Column2 et c) поскольку я не могу понять, как использовать настоящие имена заголовков столбцов, содержащиеся в первой строке. Я попытался записать результирующие строки в новый файл, и я получил правильное количество строк в выходном CSV-файле, но данные в строке отсутствуют, и я получил текстовую строку 'System.Data.DataRowView, а не 12 полей, которые я ожидал.
В коде моей последней попыткой является создание writeOutPutLine, содержащего объединенное содержимое строки, в желаемом порядке сортировки.
Я пытался использовать CSVHelper безуспешно, а также пробовал около 10 других наборов кодов, размещенных на различных веб-сайтах.
Вот мой код
Sub New_Csv_Sort ()
Dim linecount As Integer = 1
Dim dt As DataTable = New DataTable
Dim dgv As DataGridView = New DataGridView
Dim TextLine As String = ""
Dim SplitLine() As String
Dim objReader As New System.IO.StreamReader(TargetFileName, Encoding.ASCII)
Dim ColumnCount As Integer = 0
For ColumnCount = 1 To 13 Step 1
dt.Columns.Add()
Next
Dim firstline As Boolean = True
Do While objReader.Peek() <> -1
TextLine = objReader.ReadLine()
SplitLine = Split(TextLine, ",")
dt.Rows.Add(SplitLine)
If FirstTime = True Then
' Here I was trying to use the first line to set the column labels but no joy
' For ColumnCount = 1 To 12 Step 1
' dt.datacolumn.
' Next
End If
Loop
' This next is commentted out in the sort statement because I could not get the column names to be recognised
'.Sort = "Datum ASC, Picture ASC, Y_Loc ASC, X_Loc, ASC"
Dim dv As New DataView(dt) With {
.Sort = "Column5 ASC, Column1 ASC, Column12 ASC, Column11 ASC"
}
FileOpen(SortedTargetFileNumber, SortedTargetFileName, OpenMode.Output)
' Я посмотрел, что данные и они правильно прочитаны Но моя строка вывода tra sh!
For Each Rowview As DataRowView In dv
'WriteOutPutLine = dv.row
For Each DataColumn In dt.Columns
WriteOutPutLine = WriteOutPutLine & Row[col].tostring() & ","
Next
WriteOutPutLine = Rowview.ToString
PrintLine(SortedTargetFileNumber, WriteOutPutLine)
linecount = linecount + 1
Next
FileClose(SortedTargetFileNumber)
MsgBox("Sorted Lines = " & linecount)
End Sub