有人能告诉我如何从csv文件中读取列数据吗?此csv文件具有每个工作表的列标题和列值。
在我的WPF窗口中,我有两个列表框。第一个列表框(lst1)填充列标题名称。我希望在第一个列表框中加载第二个列表框(lst2),其中包含所选项的列值(列标题名称)。
下面是我在第一个列表框中加载列标题名称时使用的代码。
public List<string> ColumnNameGenerator(string FilePath)
{
string firstLine = "";
using (StreamReader reader = new StreamReader(FilePath))
{
firstLine = reader.ReadLine() ?? "";
}
return firstLine.Split(',').ToList();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string path = "D:\\Tutorial\\ExcelDocs\\school.csv";
lst1.ItemsSource = ColumnNameGenerator(path);
}
当我们在第一个列表框中选择一个标头值时,我试着获取列值。
private void lst1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var csv = from line in lst1.SelectedItem as List<string>
select (line.Split(',')).ToArray();
lst2.ItemsSource = csv;
}
但这是行不通的。怎么做呢?
提前谢谢。
发布于 2022-09-07 08:48:36
我找到了解决这个问题的办法。我用CsvHelper来解决这个问题。
private void lst1_SelectionChanged(object sender,
SelectionChangedEventArgs e)
{
lst2.Items.Clear();
string columnheadername = lst1.SelectedItems[0].ToString();
CsvConfiguration csvConfiguration = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = true,
Delimiter = ","
};
CsvReader csv = new CsvReader(File.OpenText(path), csvConfiguration);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var stringField = csv.GetField<string>(columnheadername);
lst2.Items.Add(stringField);
}
}
https://stackoverflow.com/questions/73634539
复制相似问题