Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Excel复制包含跳过列的数据并粘贴到DataGridView_C#_.net_Winforms_Excel - Fatal编程技术网

C# 从Excel复制包含跳过列的数据并粘贴到DataGridView

C# 从Excel复制包含跳过列的数据并粘贴到DataGridView,c#,.net,winforms,excel,C#,.net,Winforms,Excel,我已经成功地从excel复制并将其粘贴到C中的datagridview中。但当我按住ctrl键时,选择彼此不相邻的列,复制并粘贴到datagridview中——中间的所有列也都已粘贴。有没有办法在不打开工作簿的情况下解决这个问题 当前实现只检索剪贴板.GetDataObject.GetData,将其格式化为字符串并按制表符分隔 不幸的是,excel只是复制所有内容,而不仅仅是外部世界的选定列。您可以使用剪贴板查看器查看复制到剪贴板的内容我使用了免费的剪贴板查看器。我已经创建了一个包含以下内容的工

我已经成功地从excel复制并将其粘贴到C中的datagridview中。但当我按住ctrl键时,选择彼此不相邻的列,复制并粘贴到datagridview中——中间的所有列也都已粘贴。有没有办法在不打开工作簿的情况下解决这个问题


当前实现只检索剪贴板.GetDataObject.GetData,将其格式化为字符串并按制表符分隔

不幸的是,excel只是复制所有内容,而不仅仅是外部世界的选定列。您可以使用剪贴板查看器查看复制到剪贴板的内容我使用了免费的剪贴板查看器。我已经创建了一个包含以下内容的工作表

1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
并选择并复制了第2、4和6列。剪贴板查看器显示我复制的内容,不是三列,而是从2到6的所有列!C2:C6


您可以随时使用interop或第三方组件打开excel,获取所需内容并手动粘贴,这是我将网格转换为类似excel的网格所必须做的。我手动解析逗号分隔的值并分别设置单元格。

edokan说中间的列也被复制了,这是对的。Excel中是否有可以防止这种情况发生的设置?没有

然而,这里是实现你想要的最简单的方法

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

关闭Excel文件而不保存 按CTRL+Z组合键撤消。
如果您想要一个代码解决方案,那么是的,这是有可能的。创建VSTO加载项。此加载项将执行的操作是将相关列复制到剪贴板。与CTRL+C不同,最好查看您现在的代码。您可以通过使用“循环和区域”集合复制所选范围的每个部分来解决此问题-您接受吗?然而,我仍然不明白-您选择了“复制之前”,这意味着您已经打开了文件,但您询问的是如何在不打开的情况下复制它?你真正需要的是什么?在这两个月之间,我实际上看了一下剪贴板中的内容,但希望得到验证。谢谢。