gpt4 book ai didi

c# - 将 excel 数据粘贴到空白 DataGridView - 索引超出范围异常

转载 作者:可可西里 更新时间:2023-11-01 08:41:20 24 4
gpt4 key购买 nike

我有一个包含以下内容的 excel 表:

enter image description here

所以,我想要实现的是从 Excel 中复制它并将其粘贴到空白的 DataGridView View 中。

这是我目前的代码:

private void PasteClipboard(DataGridView myDataGridView)
{
DataObject o = (DataObject)Clipboard.GetDataObject();
if (o.GetDataPresent(DataFormats.Text))
{
string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n");
foreach (string pastedRow in pastedRows)
{
string[] pastedRowCells = pastedRow.Split(new char[] { '\t' });
using (DataGridViewRow myDataGridViewRow = new DataGridViewRow())
{
for (int i = 0; i < pastedRowCells.Length; i++)
myDataGridViewRow.Cells[i].Value = pastedRowCells[i];

myDataGridView.Rows.Add(myDataGridViewRow);
}
}
}
}

当代码运行时,出现以下错误:

enter image description here

我是否错误地处理了手头的这项任务?

最佳答案

经过一番挖掘,我发现我必须先添加列,然后添加新行,获取新创建的行的行索引,然后设置单元格值。

这是更新后的代码:

DataObject o = (DataObject)Clipboard.GetDataObject();
if (o.GetDataPresent(DataFormats.Text))
{
if (myDataGridView.RowCount > 0)
myDataGridView.Rows.Clear();

if (myDataGridView.ColumnCount > 0)
myDataGridView.Columns.Clear();

bool columnsAdded = false;
string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n");
foreach (string pastedRow in pastedRows)
{
string[] pastedRowCells = pastedRow.Split(new char[] { '\t' });

if (!columnsAdded)
{
for (int i = 0; i < pastedRowCells.Length; i++)
myDataGridView.Columns.Add("col" + i, pastedRowCells[i]);

columnsAdded = true;
continue;
}

myDataGridView.Rows.Add();
int myRowIndex = myDataGridView.Rows.Count - 1;

using (DataGridViewRow myDataGridViewRow = myDataGridView.Rows[myRowIndex])
{
for (int i = 0; i < pastedRowCells.Length; i++)
myDataGridViewRow.Cells[i].Value = pastedRowCells[i];
}
}
}

它在这里工作:

enter image description here

乐于接受批评和有用的改进建议。 这段代码很慢...

关于c# - 将 excel 数据粘贴到空白 DataGridView - 索引超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com