从excel复制并粘贴到Windows窗体

时间:2012-07-30 13:37:18

标签: c# winforms clipboard keycode

我在Windows窗体中使用了_KeyDown函数:

if ((e.KeyCode == Keys.V) && (e.Modifiers == Keys.Control))
{
    // do stuff
}

然后习惯于获取复制的数据:

 string[] clipboardRows = Clipboard.GetText(TextDataFormat.UnicodeText).Split(new string[] {"\r\n"},
                                                                                                 StringSplitOptions.None);

这样可以正常工作,但是当您从电子表格中选择说出所选单元格时,它最终会复制其间的所有单元格,例如:

1.Test
2.Test2
3.Test3
4.Test4

如果我使用 ctrl 同时选择testtest 4然后按 C 进行复制,则按 ctrl + v 并逐步完成它,所以介于test2test3之间。

我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我会告诉你为什么你不能这样做。我在Excel中录制了一个宏,输入了四行数据。我选择了单元格A1和A4,按Ctrl + C

Range("A1").Select
ActiveCell.FormulaR1C1 = "abc"
Range("A2").Select
ActiveCell.FormulaR1C1 = "def"
Range("A3").Select
ActiveCell.FormulaR1C1 = "hij"
Range("A4").Select
ActiveCell.FormulaR1C1 = "klm"
Range("A4,A1").Select    'It actually concatenates the cells you've selected, that info isn't ion the clipboard, if I selected three cells in the column it would be Range("A4,A1,A2").Select
Range("A1").Activate
Selection.Copy  

'Range("B1").Select
'ActiveSheet.Paste   'when I paste onto new cells only two rows are taken up

您可以在VSTO中执行此操作,例如Copy & Paste VSTO - Excel Power Tools,但这是另一个问题。