gpt4 book ai didi

c# - 如何将多行从 Excel 粘贴到 C# 中的 DataGridView?

转载 作者:行者123 更新时间:2023-11-30 16:45:24 25 4
gpt4 key购买 nike

我正在尝试将 Excel 工作表中的行粘贴到 C# 中的 DataGridView。我使用了以下代码:

private void PasteClipboard(DataGridView myDataGridView)
{
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

但是,结果只有一行包含数据,而其他行是空的。例如,如果我复制并粘贴 3 行,则第 3 行是唯一包含数据的行,而其他两行是空的。我做错了什么?

最佳答案

你需要这样做:

int myRowIndex = myDataGridView.Rows.Add();

取而代之的是:

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

请注意,当您创建新行时,您还会收到该行的索引,作为 myDataGridView.Rows.Add(); 的返回值。您的代码忽略该值,而是假定新创建的行将始终是最后一行:myDataGridView.Rows.Count - 1;

关于c# - 如何将多行从 Excel 粘贴到 C# 中的 DataGridView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198415/

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