DataGrid中的列比csv文件中的列多

hiz5n14c  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(71)

在wpf中,我创建了一个DataGrid,它必须显示csv文件中的8列和190行。我的问题显示我5列以上,然后在结束时重复8列,是在开始。为什么要多给我看13列?在5列中,他插入条目:Campionato_calcio_2022_23.Campionato_calcio_2022_23_serie_A
这就是代码:

class Campionato_calcio_2022_23_serie_A
{
    public String ID { get; set; }
    public string Squadra_casa { get; set; }
    public string Squadra_fuoric { get; set; }
    public string Ris_cas { get; set; }
    public string Ris_fuorc { get; set; }
    public string segni { get; set; }
    public string Data { get; set; }
    public string Giornate { get; set; }

    public Campionato_calcio_2022_23_serie_A() { }

}

void lFnGenerateData(StreamReader aReader)
    {

        try
        {
            bool lBlnIsColumns = true;
            string[] lArrCols = null;
            List<Campionato_calcio_2022_23_serie_A> lstPersonalList = new List<Campionato_calcio_2022_23_serie_A>();
            DataGrid1.Columns.Clear();
            while (aReader.Peek() > 0)
            {
                string lStrLine = aReader.ReadLine();
                if (lStrLine == null)
                    break;
                if (lStrLine.Trim() == "")
                    continue;
                string[] lArrStrCells = null;
                lArrStrCells = lStrLine.Split(';');
                if (lArrStrCells == null)
                    continue;
                if (lBlnIsColumns)
                {
                    lArrCols = lArrStrCells;
                    foreach (string lStrCell in lArrStrCells)
                    {
                        DataGridTextColumn lDGCol = new DataGridTextColumn();
                        lDGCol.Header = lStrCell;
                        lDGCol.Binding = new System.Windows.Data.Binding(lStrCell);
                        DataGrid1.Columns.Add(lDGCol);
                    }
                    lBlnIsColumns = false;
                    continue;
                }
                if (lArrCols == null)
                    continue;

                int lIntColID = 0;
                Campionato_calcio_2022_23_serie_A objCampionato_calcio_2022_23_serie_A = new Campionato_calcio_2022_23_serie_A();
                objCampionato_calcio_2022_23_serie_A.ID = lArrStrCells[0];
                objCampionato_calcio_2022_23_serie_A.Squadra_casa = lArrStrCells[1];
                objCampionato_calcio_2022_23_serie_A.Squadra_fuoric = lArrStrCells[2];
                objCampionato_calcio_2022_23_serie_A.Ris_cas = lArrStrCells[3];
                objCampionato_calcio_2022_23_serie_A.Ris_fuorc = lArrStrCells[4];
                objCampionato_calcio_2022_23_serie_A.segni = lArrStrCells[5];
                objCampionato_calcio_2022_23_serie_A.Data = lArrStrCells[6];
                objCampionato_calcio_2022_23_serie_A.Giornate = lArrStrCells[7];

                lstPersonalList.Add(objCampionato_calcio_2022_23_serie_A);
            }
            aReader.Close();
            DataGrid1.ItemsSource = lstPersonalList;

        }
        catch (Exception)
        {
            throw;
        }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        {

            try
            {
                lFnLoadFileData();
            }
            catch (Exception)
            {
                throw;
            }

        }
        void lFnLoadFileData()
        {
            try
            {

                Microsoft.Win32.OpenFileDialog lObjFileDlge = new Microsoft.Win32.OpenFileDialog();
                lObjFileDlge.Filter = "CSV Files|*.csv";
                lObjFileDlge.FilterIndex = 1;
                lObjFileDlge.Multiselect = false;
                string fName = "";
                bool? lBlnUserclicked = lObjFileDlge.ShowDialog();
                if (lBlnUserclicked != null || lBlnUserclicked == true)
                {
                    fName = lObjFileDlge.FileName;
                }
                if (System.IO.File.Exists(fName) == true)
                {
                    // FileStream lObjFileStream = lObjFileDlge.File.OpenRead();
                    StreamReader lObjStreamReader = new StreamReader(fName);
                    System.Windows.MessageBox.Show(lObjStreamReader.ToString());
                    lFnGenerateData(lObjStreamReader);
                    lObjStreamReader.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
    }

我希望它显示我只有8列,这是在csv文件。

l2osamch

l2osamch1#

使用此代码解决:

using CsvHelper.Configuration;
using CsvHelper.TypeConversion;

 private void Button_Click(object sender, RoutedEventArgs e) 
    {
        var fileName = @"D:\C_Sharp\WPF\Progetti\Campionati-calcio-2022-23\bin\Debug\net6.0-windows\Camp-calcio-2022-23.csv";
        var configuration = new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            Encoding = Encoding.UTF8,
            Delimiter = ","
        };
        using (var fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            using (var textReader = new StreamReader(fs, Encoding.UTF8))
            using (var csv = new CsvReader(textReader, configuration))
            {
                var data = csv.GetRecords<OttoColonne>();
                foreach (var OttoColonne in data)
                {
                    // Do something with values in each row
                    DataGrid1.ItemsSource = data;
                }
            }
        }
    }

 class OttoColonne
{
    public int ID { get; set; }
    public string Squadra_casa { get; set; }
    public string Squadra_fuoric { get; set; }
    public string Ris_cas { get; set; }
    public string Ris_fuorc { get; set; }
    public string segni { get; set; }
    public string Data { get; set; }
    public string Giornate { get; set; } 
}

相关问题