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

本文关键字:DataGridView 数据 复制 Excel | 更新日期: 2023-09-27 18:29:11

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

当前的实现只是检索Clipboard.GetDataObject().GetData,将其格式化为字符串并通过制表符进行分隔。

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

不幸的是,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的所有列(实际上是Sheet!C2:C6)。

你总是可以使用interop或第三方组件打开excel,得到你需要的东西并手动粘贴,这是我将网格转换为类似excel的网格所必须做的。我手动解析逗号分隔的值,并分别设置单元格。

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

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

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

  1. 关闭Excel文件而不保存
  2. CTRL+Z撤消

如果你想要一个代码解决方案,那么是的,这是有可能的。创建VSTO外接程序。此加载项将执行的操作是将相关列复制到剪贴板。与CTRL+C

不同