我设法从 excel 复制并将其粘贴到 C# 中的 datagridview 中。但是当我按住 ctrl 时,选择彼此不相邻的列,复制并粘贴到 datagridview - 之间的所有列也被粘贴。有没有办法在不实际打开工作簿的情况下解决这个问题?
当前的实现只是Clipboard.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 的所有列(实际上是 Sheet!C2:C6)。
您始终可以使用互操作或 3rd 方组件打开 excel 并获取您需要的内容并手动粘贴它,我必须这样做才能将网格转换为类似网格的 excel。我手动解析逗号分隔值并单独设置单元格。
edokan 说中间列也被复制时是对的。Excel中是否有可以防止这种情况的设置?不。
但是,这是实现您想要的最简单的方法。
复制之前删除不必要的列。然后复制粘贴。完成后,您有两个选择
如果您想要代码解决方案,那么是的,有可能。创建 VSTO 加载项。此加载项将执行的操作是将相关列复制到剪贴板。不一样CTRL+C