0

我设法从 excel 复制并将其粘贴到 C# 中的 datagridview 中。但是当我按住 ctrl 时,选择彼此不相邻的列,复制并粘贴到 datagridview - 之间的所有列也被粘贴。有没有办法在不实际打开工作簿的情况下解决这个问题?

当前的实现只是Clipboard.GetDataObject().GetData将 、 格式化为字符串并按制表符分隔。

4

2 回答 2

1

不幸的是,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)。

您始终可以使用互操作或 3rd 方组件打开 excel 并获取您需要的内容并手动粘贴它,我必须这样做才能将网格转换为类似网格的 excel。我手动解析逗号分隔值并单独设置单元格。

于 2013-10-10T08:32:09.560 回答
1

edokan 说中间列也被复制时是对的。Excel中是否有可以防止这种情况的设置?不。

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

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

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

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

于 2013-10-11T12:22:26.657 回答