Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从excel复制到DataGridView c#_C#_Datagridview_Copy Paste - Fatal编程技术网

从excel复制到DataGridView c#

从excel复制到DataGridView c#,c#,datagridview,copy-paste,C#,Datagridview,Copy Paste,我正在尝试将多个excel行复制到我的datagridview,然后发送到我的DB。 我使用Ctrl+C复制excel行,然后尝试使用程序中的按钮单击事件粘贴它们,但出现错误: 我的代码如下: private void btnPaste_Click(object sender, EventArgs e) { try { dgvPM.Focus(); dgvPM.CurrentCell = dgvPM[1,1];

我正在尝试将多个excel行复制到我的datagridview,然后发送到我的DB。 我使用Ctrl+C复制excel行,然后尝试使用程序中的按钮单击事件粘贴它们,但出现错误:

我的代码如下:

private void btnPaste_Click(object sender, EventArgs e)
    {

        try
        { 
        dgvPM.Focus();
        dgvPM.CurrentCell = dgvPM[1,1];
        string s = Clipboard.GetText();
        string[] lines = s.Replace("\n", "").Split('\r');
        string[] fields;
        int row = 0;
        int column = 0;
            foreach (string l in lines)
                {
                    fields = l.Split('\t');
                    foreach (string f in fields)
                        dgvPM[column++, row].Value = f;
                    row++;
                    column = 0;
                }
        }
        catch(SqlException ex)
        {
            MessageBox.Show(ex.Message);
        }
        catch(System.Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
我不知道我还能如何完成这项任务。 任何帮助都将不胜感激

更新:

以下是我的datagridview的外观:

我正在粘贴的excel数据示例:


我也遇到过同样的情况,你的代码对我帮助很大。这是我的,基于你的:

 private void button1_Click(object sender, EventArgs e)
    {
        string s = Clipboard.GetText();

        string[] lines = s.Replace("\n", "").Split('\r');

        dgPositions.Rows.Add(lines.Length-1); 
        string[] fields;
        int row = 0;
        int col = 0;

        foreach (string item in lines)
        {
            fields = item.Split('\t');
            foreach (string f in fields)
            {
                Console.WriteLine(f);
                dgPositions[col, row].Value = f ;                   
                col++;
            }
            row++;
            col = 0;
        }
    }
问题是一样的。。我需要从excel复制到datagridview。

我假设DataGridView中的一列包含数字,而您试图添加无法转换的字符串值。不,我甚至尝试过将excel行格式化为完全符合DataGridView的格式,但仍然会弹出此对话框。您能否从剪贴板发布示例数据,以及DataGridView的设计器部分?使用您提供的代码并假设剪贴板内容包含以制表符分隔的字符串…您可能会遇到的一个错误是,如果剪贴板中包含的字符串的列或行比网格中的多。这将抛出索引超出范围错误。另一个可能是格式问题,如果列正在查找一个数字并得到其他内容,则可能引发数据错误。错误是什么?