作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 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];
}
}
但是,结果只有一行包含数据,而其他行是空的。例如,如果我复制并粘贴 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/
我是一名优秀的程序员,十分优秀!