【问题标题】:Import data from CSV file to datagrid将数据从 CSV 文件导入数据网格
【发布时间】:2020-03-03 00:48:11
【问题描述】:

我有一个应用程序 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

【问题讨论】:

    标签: vb.net csv uwp datagrid


    【解决方案1】:

    我在我公司的 VB .NET 应用程序中创建了一个 .CSV 上传文件,以显示在网格中。我就是这样做的:

    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
    
    

    【讨论】:

    • 非常感谢!当我从桌面加载 CSV 文件时,返回错误“访问路径被拒绝。我该如何解决?
    • 确保您没有在 Excel 或文档中打开文件。同样右键单击该文件,检查属性并确保它不是只读的。
    • 该文件不是只读且已关闭:/
    • 您可以检查文档的安全设置。确保您具有读/写权限。查看support.microsoft.com/en-us/help/2623670/…smallbusiness.chron.com/fix-file-access-denied-68193.html
    • 如果我在另一台电脑上安装我的应用程序,该应用程序可以工作吗?
    【解决方案2】:

    将数据从 CSV 文件导入数据网格

    一般情况下,我们经常使用CsvReader将csv文件转换为可以直接绑定到DataGrid列的集合。这是您可以参考的官方document。我将在下面提供示例代码。

    模型类

    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>
    

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 1970-01-01
      • 2015-02-22
      • 2011-05-25
      • 2015-06-30
      • 2016-12-30
      • 2012-10-24
      • 1970-01-01
      相关资源
      最近更新 更多