Копирование данных с пропущенными столбцами из Excel и вставка в DataGridView
Мне удалось скопировать Excel и вставить его в datagridview на C #. Но когда я удерживаю ctrl, выберите столбцы, которые не смежны друг с другом, скопируйте и вставьте в datagridview – все столбцы между ними также были вставлены. Есть ли способ обойти это без фактического открытия книги?
Текущая реализация просто извлекает Clipboard.GetDataObject().GetData
, форматирует это в строку и делит по вкладке.
- Сохранить созданный файл excel с диалоговом
- Рабочий лист Excel Изменение текущего листа C #
- C # Тестирование модуля Windows Form
- Быстрый переход из Excel в DataSet или DataGridView
- Как показать форму окна в центре окна Excel в VSTO AddIn
- Как загрузить файл Excel с веб-сайта с помощью настольного приложения C #
- Как экспортировать файл excel в c # на нескольких листах
- Как я могу разрешить пользователю выбирать файл Excel и запрашивать выбранный файл в приложении WinForms?
- C # Winforms save to excel с форматированием
- Команды Async и Await компилируются без ошибок, но не позволят моей форме Windows реагировать
- Исключение, созданное при сохранении файла excel
- Как экспортировать фильтрованные данные из SQL Server в Excel?
- Как исправить исключение ThreadAbortException в проекте VSTO Excel из-за NativeWindow?
К сожалению, 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.
Однако вот самый простой способ добиться того, чего вы хотите.
Перед копированием Удалите ненужные столбцы. Затем скопируйте и вставьте. После этого у вас есть два варианта
- Закройте файл Excel без сохранения
- Нажмите CTRL + Z, чтобы отменить.
Если вам нужен код, тогда да, есть возможность. Создайте надстройку VSTO. Что сделает это надстройка, скопируйте соответствующие столбцы в буфер обмена. Не то же самое, что CTRL + C