2013-08-27 54 views
0

我已經設法從excel中複製並將其粘貼到C#中的datagridview中。但是當我按住Ctrl的時候,選擇彼此不相鄰的列,複製並粘貼到datagridview中 - 它們之間的所有列也被粘貼。有沒有實際打開工作簿的方法?從Excel中將跳過的列複製數據並粘貼到DataGridView中

當前的實現只是檢索Clipboard.GetDataObject().GetData,將其格式化爲字符串並通過製表符分隔。

+0

會更好地看到你現在的代碼。您可以通過使用循環和「區域集合」複製選定區域的每個部分來解決它 - 您接受的是?但是,我仍然沒有得到它 - 你選擇複製之前,這意味着你有文件打開,但你問的方法複製它沒有打開?這是你真正的需要? –

回答

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所有列(實際上表!C2 :C6)。

您可以隨時使用互操作或第三方組件打開excel,並獲得您所需要的內容並手動粘貼,以便將網格轉換爲像網格一樣的excel。我手動分析逗號分隔值並單獨設置單元格。

+0

在這幾個月之間,我確實看了看剪貼板裏面的內容,但想要驗證。非常感謝。 –

1

edokan是正確的,當他說中間的列也被複制。 Excel中是否有可以防止這種情況的設置?沒有。

然而,這是實現你想要的最簡單的方法。

複製之前刪除不必要的列。然後複製並粘貼。一旦這樣做,你有兩個選擇

  1. 關閉Excel文件而不保存
  2. 按CTRL +ž撤消。

如果你想要一個代碼解決方案,那麼是的,這是可能的。創建一個VSTO加載項。這個加載項將做的是將相關的列複製到剪貼板。不一樣CTRL + C

相關問題