Импорт данных из файла CSV в сетку данных - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть приложение UWP, в которое я импортирую данные из CSV-файла в ListView.

Как я могу поместить данные в DataGrid? Теперь я использую этот код из данных в ListView:

Dim CsvRows = New ObservableCollection(Of String)()

Dim picker = New Windows.Storage.Pickers.FileOpenPicker()
picker.ViewMode = PickerViewMode.List
picker.FileTypeFilter.Add(".csv")

Dim file = Await picker.PickSingleFileAsync()

CsvRows.Clear()

Using csvReader = New CsvParse.CsvFileReader(Await file.OpenStreamForReadAsync())
        Dim row = New CsvParse.CsvRow()

        While csvReader.ReadRow(row)
            Dim newRow = ""

            For i = 0 To row.Count
                newRow += row(i) + ","

                i += 1
            Next

            CsvRows.Add(newRow)
        End While

End Using

GridTabacchi.ItemsSource = CsvRows

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Я создал загрузку .CSV в приложении VB .NET моей компании для отображения в сетке. Вот как я это сделал:

Dim dt as DataTable = New DataTable
Dim firstLine As Boolean = True

 Dim sr As StreamReader = New StreamReader(txtFileLocation.Text.Trim())
     Do While sr.Peek() >= 0
         If firstLine Then
            firstLine = False
            Dim cols() As String = sr.ReadLine.Split(","c)
            For Each col As String In cols
                dt.Columns.Add(New DataColumn(col, GetType(String)))
             Next
          Else
             Dim data() As String = sr.ReadLine.Split(","c)
             dt.Rows.Add(data)
          End If
      Loop
 sr.Close()

 dataGrid.DataSource = dt

0 голосов
/ 06 ноября 2019

Импорт данных из файла CSV в сетку данных

Как правило, мы часто используем CsvReader для преобразования файла CSV в коллекцию, которая может быть привязана к DataGridколонка напрямую. И это официальный документ , на который вы могли бы сослаться. Ниже приведен пример кода.

Класс модели

Public Class Item
    Public Property Id As String
    Public Property Title As String
    Public Property Link As String
    Public Property Type As String
    Public Property Remark As String
    Public Property Time As String
End Class

Код позади

Private Sub DataGrid_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Using reader = New StreamReader("Assets\Archive.csv", True)

        Using csv = New CsvReader(reader)
            Dim records = csv.GetRecords(Of Item)()

            For Each item In records
                Items.Add(item)
            Next
        End Using
    End Using

    MyDataGrid.ItemsSource = Items
End Sub

Марка DataGridTextColumn основываться на классе вашей модели и привязывать каждое свойство, как показано ниже.

<controls:DataGrid.Columns>
    <controls:DataGridTextColumn
        Width="*"
        Binding="{Binding Id}"
        Header="ID"
        Tag="Id"
        />
    <controls:DataGridTextColumn
        Width="*"
        Binding="{Binding Title}"
        Header="Title"
        Tag="Title"
        />
    <controls:DataGridComboBoxColumn
        Width="*"
        Binding="{Binding Link}"
        Header="Link"
        ItemsSource="{x:Bind source}"
        Tag="Link"
        />
    <controls:DataGridTextColumn
        Width="*"
        Binding="{Binding Type}"
        Header="Type"
        Tag="Type"
        />
    <controls:DataGridTextColumn
        Width="*"
        Binding="{Binding Remark}"
        Header="Remark"
        Tag="Remark"
        />
    <controls:DataGridTextColumn
        Width="*"
        Binding="{Binding Time}"
        Header="Time"
        Tag="Time"
        />
</controls:DataGrid.Columns>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...