将字符串数组值插入DataGridView C#

时间:2013-08-22 08:32:06

标签: c# winforms datagridview insert arrays

我正在 C#中开发 Windows窗体应用程序。我的程序将读取excel单元格中的值,并将数据插入DataGridView以显示用户。

在我读完excel文件后,我得到了字符串数组中的结果。如何插入DataGridView?

private void btnImport_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application ExcelObj = null;
        ExcelObj = new Microsoft.Office.Interop.Excel.Application();

        if (ExcelObj != null)
        {
            if (tbxFileDirectory.Text != "")
            {
                Workbook workbook = ExcelObj.Workbooks.Open(
                openFD.FileName, 0, true, 5, "", "", true, XlPlatform.xlWindows, "\t", false, false, 0, true);

                Sheets sheets = workbook.Worksheets;

                //Get excel sheet number
                Worksheet worksheet = (Worksheet)sheets.get_Item(1);

                for (int i = 6; i <= worksheet.UsedRange.Rows.Count; i++)
                {
                    Range range = worksheet.get_Range("A" + i.ToString(), "K" + i.ToString());

                    Array myvalues = (Array)range.Cells.Value;

                    string[] strArray = ConvertToStringArray(myvalues);

                    //INSERT INTO DATAGRIDVIEW
                }
                MessageBox.Show("File was imported successfully");
            }
            else
            {
                MessageBox.Show("Please select the file to import.");
            }
        }
        else 
        {
            MessageBox.Show("ERROR: EXCEL couldn't be started!");
        }
    }

我的DataGrid有4列,ProductID,ProductName,Price,&amp;数量。我想插入这些值,strArray [0],strArray [1],strArray [9]&amp; strArray [10]在每一列中。我怎样才能做到这一点?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

你可以这样做

dataGridView1.Rows.Add(strArray[0],strArray[1]......);

答案 1 :(得分:2)

DataGridView在直接插入字符串时会出现性能问题,如果您拥有的只是网格本身中的数据,那么操作数据会很麻烦(尽管显然您需要从excel解析数据)。通常最好将数据放入DataTable中,然后将其绑定到网格中。

如果您需要通过代码将数据填充到DataTable中的示例,请参阅Add new column and data to datatable that already contains data - c#

绑定很简单,将DataTable分配给网格的DataSource属性。

如果您获得的行数超过几百行,您可能仍然会看到性能问题 - 但是,通过将逻辑更改为虚拟化数据,请参阅DataGridView live display of datatable using virtual mode以获取一个简单示例。