C# 将 CSV 加载到 DataGrid 中

问题描述 投票:0回答:2

所以我有一个 CSV 文件:

    Header1,Header2,Header3,Header4
    Data11,Data12,Data13,Data14
    Data21,Data22,Data23,Data24
    Data31,Data32,Data33,Data34
    Data41,Data42,Data43,Data44
WPF 项目中的

DataGrid
。我一生都无法让它进口。我之前尝试做的是添加所有列(
Header1
Header2
Header3
Header4
)然后添加行......但似乎没有任何方法可以添加行。所以我尝试使用
ItemSource
...但没有运气。

那么...如何将 CSV 文件导入到

System
.
Windows
.
Controls
.
DataGrid

更新

所以我尝试了这个:

    DataTable table = CSVReader.ReadCSVFile(fileName, true);
    dataGrid.ItemsSource = table.DefaultView;

而且它似乎有点作用……: The Rows show up, but no columns or content

更新2

所以打开后

AutoGenerateColumns
,一切都很完美。

c# wpfdatagrid
2个回答
6
投票

看看这个图书馆。 它允许您将任何 CSV 转换为 DataTable 类型的对象并将其绑定到 DataGrid,如下所示:

DataTable table = CSVReader.ReadCSVFile(fileName, true);
myGridView.ItemSource = table.DefaultView;
myGridView.AutoGenerateColumns = true;

如果您已经将 CSV 解析为表格,只需将

ItemSource
绑定到表格的
DefaultView
属性,并将
AutoGenerateColums
设置为
true


0
投票

公共部分类MainWindow:窗口 { 公共 ObservableCollection CsvDataList { 获取;放; }

public MainWindow()
{
    InitializeComponent();
    CsvDataList = new ObservableCollection<CsvData>();
    dataGrid.ItemsSource = CsvDataList;
    LoadCsvFile();
}

private void LoadCsvFile()
{
    OpenFileDialog openFileDialog = new OpenFileDialog
    {
        Filter = "CSV files (*.csv)|*.csv"
    };
    if (openFileDialog.ShowDialog() == true)
    {
        using (StreamReader reader = new StreamReader(openFileDialog.FileName))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                var values = line.Split(','); // Assuming a comma is the delimiter

                // Map CSV data to the CsvData class
                CsvDataList.Add(new CsvData
                {
                    Column1 = values[0],
                    Column2 = values[1],
                    Column3 = values[2],
                    Column4 = values[3],
                    Column5 = values[4]
                });
            }
        }
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.