Excelシートの行をC#のDataGridView
に貼り付けようとしています。他は空であるが複数行をExcelのDataGridViewにC#で貼り付けるにはどうすればよいですか?
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行目がデータのある行で、他の2行は空です。私は間違って何をしていますか?あなたは新しい行を作成するとき、あなたはまた、戻り値として、その行のインデックスを受け取ること
myDataGridView.Rows.Add();
int myRowIndex = myDataGridView.Rows.Count - 1;
注:この代わりの
int myRowIndex = myDataGridView.Rows.Add();
:あなたはこれを実行する必要が
なぜ、ClibboardデータをDataTableに変換して使用しないのですか? – Ron