C# 将excel/CSV文件数据导入GridView winforms中的可见列

C# 将excel/CSV文件数据导入GridView winforms中的可见列,c#,winforms,radgridview,C#,Winforms,Radgridview,我正在尝试将任何CSV/Excel文件中的数据填充到gridview中。当所有列都可见时,它可以正常上载。但是,我会根据用户的选择在网格中显示/隐藏列。因此,我希望粘贴的值仅填充在网格的可见列中。我在winforms工作。我在下面包含了用于将数据粘贴到网格中的代码 //Code for pasting clipboard data into gridview private void PopulateImportGrid() { char[] rowSplit

我正在尝试将任何CSV/Excel文件中的数据填充到gridview中。当所有列都可见时,它可以正常上载。但是,我会根据用户的选择在网格中显示/隐藏列。因此,我希望粘贴的值仅填充在网格的可见列中。我在winforms工作。我在下面包含了用于将数据粘贴到网格中的代码

    //Code for pasting clipboard data into gridview
  private void PopulateImportGrid()
    {
        char[] rowSplitter = {'\r', '\n'};
        char[] columnSplitter = {'\t'};

        //get the text from clipboard
        IDataObject dataInClipboard = Clipboard.GetDataObject();
        if (dataInClipboard != null)
        {
            var stringInClipboard = (string) dataInClipboard.GetData(DataFormats.Text);
            //split it into lines
            string[] rowsInClipboard = stringInClipboard.Split(rowSplitter, StringSplitOptions.RemoveEmptyEntries);

            //     grdSiteDetails.DeferRefresh();
            // loop through the lines, split them into cells and place the values in the corresponding cell.
            using (grdSiteDetails.DeferRefresh())
            {
                for (int iRow = 0; iRow < rowsInClipboard.Length; iRow++)
                {
                    grdSiteDetails.Rows.Add(iRow);
                    //split row into cell values
                    string[] valuesInRow = rowsInClipboard[iRow].Split(columnSplitter);
                    //cycle through cell values
                    for (int iCol = 0; iCol < valuesInRow.Length; iCol++)
                    {
                        //assign cell value, only if it within columns of the grid
                        if (grdSiteDetails.ColumnCount - 1 >= iCol)
                        {
                            grdSiteDetails.Rows[iRow].Cells[iCol].Value = valuesInRow[iCol];
                        }
                    }
                }
            }
        }

        grdSiteDetails.ColumnChooserSortOrder = RadSortOrder.None;
    }`

列是如何隐藏的?如果您正在使用以下属性。粘贴时检查相同的属性


this.dataGridView1.Columns[columnName].Visible

列名是在设计时添加的,我粘贴到网格中的数据将永远不会有要检查的列名。在执行下面的行之前,请检查iCol th位置的列是否隐藏。grdSiteDetails.Rows[iRow].Cells[iCol].Value