Копирование данных с пропущенными столбцами из Excel и вставка в DataGridView

Мне удалось скопировать Excel и вставить его в datagridview на C #. Но когда я удерживаю ctrl, выберите столбцы, которые не смежны друг с другом, скопируйте и вставьте в datagridview – все столбцы между ними также были вставлены. Есть ли способ обойти это без фактического открытия книги?

Текущая реализация просто извлекает Clipboard.GetDataObject().GetData , форматирует это в строку и делит по вкладке.

К сожалению, excel просто копирует все не только выбранные вами столбцы для внешнего мира. Вы можете просмотреть, что скопировано в буфер обмена, используя средство просмотра буфера обмена (я использовал Free Clipboard Viewer). Я создал рабочий лист со следующими

 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, используя interop или сторонний компонент, и получить то, что вам нужно, и вставить его вручную, что я должен был сделать для преобразования сетки в excel как grid. Я вручную проанализировал значения, разделенные запятыми, и установил ячейки отдельно.

edokan прав, когда он говорит, что средние столбцы также скопированы. Есть ли параметр в Excel, который может это предотвратить? NO.

Однако вот самый простой способ добиться того, чего вы хотите.

Перед копированием Удалите ненужные столбцы. Затем скопируйте и вставьте. После этого у вас есть два варианта

  1. Закройте файл Excel без сохранения
  2. Нажмите CTRL + Z, чтобы отменить.

Если вам нужен код, тогда да, есть возможность. Создайте надстройку VSTO. Что сделает это надстройка, скопируйте соответствующие столбцы в буфер обмена. Не то же самое, что CTRL + C

  • Как решить Невозможно использовать объект типа «System.Data.DataView» для ввода «System.Data.DataTable» ERROR
  • Правильный способ отмены фонового рабочего в процессе Excel
  • Скрыть линии сетки в Excel Chart winforms vb.net
  • Что произойдет, если ячейка дважды нажата в excel?
  • Сравните, добавьте, удалите или обновите строки между двумя datagridview c #
  • Не удалось привязать данные к DataGridView с помощью BindingList в приложении WinForm
  • Дата рассчитывается неверно
  • Показать WinForm под ячейкой
  • Чтобы получить список всего текста управления / заголовка решения Visual Studio
  • Как заставить функцию поля данных изменить счет на сумму в EPPlus?
  • Функциональность Excel не работает при публикации приложения winform с clickonce
  • Давайте будем гением компьютера.