使用c#读取wpf datagrid中的多选csv文件

时间:2016-03-16 18:41:19

标签: c# wpf c#-4.0 c#-3.0 c#-2.0

嘿伙计们,我一直在尝试阅读多选的csv文件,并将它们显示在wpf数据网格中,但我遇到了代码问题。这里是我的代码

    OpenFileDialog ofd = new OpenFileDialog();
    DataTable dtt = new DataTable();
      [DelimitedRecord(",")]
    private class myCSVFile
    {
        public string Supplier;

        public string Product;

        public string Price;
    }
      private void btnImport_Click(object sender, RoutedEventArgs e)
    {
     FileHelperEngine engine = new FileHelperEngine(typeof(myCSVFile));
        myCSVFile[] result= new myCSvFile[];

                 foreach (string filepath in ofd.FileNames)
        {
            for (int i = 0; i < ofd.FileNames.Lenght; i++)
            {
                result[i] = File.ReadAllLines(System.IO.Path.ChangeExtension(filepath,".csv"));
            }
        }
        dtt.Columns.Add("Suplier", typeof(string));
        dtt.Columns.Add("Supplier Type", typeof(string));
        dtt.Columns.Add("Price", typeof(string));

        foreach (myCSVFile c in result)
        {
            Console.WriteLine(c.Supplier + " " + c.Product + " " + c.Price);
            dtt.Rows.Add(c.Supplier, c.Product, c.Price);
            dataGridv.DataContext = dtt.DefaultView;
        }
        }

我有一个文件助手引用,我在线下载以帮助阅读.csv,这适用于单个csv文件,但不适用于多选。我使用ofd.FileNames来获取和路径数组,并尝试使用循环来读取特定路径的所有行,但它在

时给出了错误
        result[i] =          File.ReadAllLines(System.IO.Path.ChangeExtension(filepath,".csv"));

它说不能隐瞒将'string []'转换为'Spurs.Import.myCSVFile'请问我做错了什么。还有另外一种方法可以做到这一点,我是c#

的新手

1 个答案:

答案 0 :(得分:0)

  1. 您初始化myCSVFile[] result = null;因此result[i] = ...将失败。

    编辑:在更新的问题中,您初始化myCSVFile[] result = new myCSVFile[];,这是无效的语法。你必须给出数组的大小。

  2. 您在嵌套循环中遍历FileNames集合

    foreach (string filepath in  ofd.FileNames) {
       for (int i = 0; i < ofd.FileNames.Length; i++) {
           result[i] = //somestuff
       }
    }
    

    如果您选择了n个文件,result[i]将被分配n ^ 2次。

  3. File.ReadAllLines()发送string[]。数组的每个元素都在给定文件中。 myresult[i]必须是myCSVFile的实例。您将不得不对filecontents进行一些额外的解析来创建这样的实例。

    编辑:我不确定,在解析部分说什么,不知道文件结构。但是,说实话,如果你不明白为什么你不能将string[]分配给某个自定义课程,我们就无法在这里帮助你。