所以我有一个 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;
而且它似乎有点作用……:
更新2
所以打开后
AutoGenerateColumns
,一切都很完美。
看看这个图书馆。 它允许您将任何 CSV 转换为 DataTable 类型的对象并将其绑定到 DataGrid,如下所示:
DataTable table = CSVReader.ReadCSVFile(fileName, true);
myGridView.ItemSource = table.DefaultView;
myGridView.AutoGenerateColumns = true;
如果您已经将 CSV 解析为表格,只需将
ItemSource
绑定到表格的 DefaultView
属性,并将 AutoGenerateColums
设置为 true
公共部分类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]
});
}
}
}
}
}