从Excel跳过的列中复制数据并粘贴到DataGridView中

我已经设法从Excel复制,并将其粘贴到C#中的datagridview。 但是当我按住CTRL,select不相邻的列,复制并粘贴到datagridview – 之间的所有列也被粘贴。 有没有实际打开工作簿的方法呢?

当前的实现简单地检索Clipboard.GetDataObject().GetData ,将其格式化为一个string,并按Tab分隔。

不幸的是,excel只是复制一切,而不仅仅是你select的外部世界的列。 您可以使用剪贴板查看器(我已经使用免费剪贴板查看器)查看复制到剪贴板的内容。 我已经创build了一个工作表

 1,2,3,4,5,6 1,2,3,4,5,6 1,2,3,4,5,6 1,2,3,4,5,6 

并select并复制列2,4和6.剪贴板查看器显示我所复制的不是三列,而是从2到6(实际上是Sheet!C2:C6)的所有列。

你总是可以使用互操作或第三方组件来打开excel,并获得你所需要的东西,并手动粘贴它,我必须做的转换网格像Excel网格。 我手动分析逗号分隔值,并单独设置单元格。

当他说中间的栏目也被复制的时候,edokan是正确的。 Excel中有没有可以防止的设置? 没有。

但是,这是实现你想要的最简单的方法。

复制之前删除不必要的列。 然后复制并粘贴。 一旦完成,你有两个select

  1. closuresExcel文件而不保存
  2. CTRL + Z撤消。

如果你想要一个代码解决scheme,那么是的,这是有可能的。 创build一个VSTO加载项。 这个加载项将做的是将相关的列复制到剪贴板。 与CTRL + C不一样