#c# #excel #datagridview
#c# #excel #datagridview
Вопрос:
Если я создал приложение, которое ожидает, что пользователь будет использовать функциональность копирования-вставки из datagridview в excel (в виде простого экспорта), есть ли у меня большой риск, что это больше не будет работать / давать странное поведение в будущих сборках .net / версий excel?
Ответ №1:
Согласно этой статье MSDN о копировании данных из DataGridView
, элемент управления установит в буфер обмена как строковые данные, разделенные табуляцией, так и таблицу HTML, представляющую скопированные данные. Поскольку это относительно стандартные форматы, а также относительно стандартная практика обмена данными, вы должны быть в безопасности.
Конечно, никто не может с уверенностью сказать, что Microsoft будет делать в будущих версиях своих продуктов, поэтому всегда есть шанс, что позже что-то сломается. Тем не менее, Microsoft довольно хороша в обеспечении достаточной обратной совместимости.
Ответ №2:
Всегда существует риск полагаться на clipboard для реализации экспорта:
Я бы не сказал, что он большой, но вы фактически напрашиваетесь на проблемы при экспорте таким образом — в зависимости от того, что установлено в системе (например, какое-нибудь фоновое приложение для просмотра буфера обмена) или разных версий Excel или использования вашего приложения в ситуации с сервером терминалов и т.д. — список вещей, которые могут пойти не так, «бесконечен», ИМХО.
Использование какого-либо механизма для записи реального файла (XLS или XLSX) — это действительно правильный путь.
Существует несколько бесплатных и коммерческих библиотек (для которых не требуется присутствие Excel) для записи файлов Excel (некоторые могут даже экспортировать содержимое DataGridView
менее чем с 10 строками кода!):
- OpenXML из MS (бесплатно)
- ClosedXML (бесплатно)
- EPPlus (бесплатно)
- Устройство для работы с электронными таблицами (коммерческое)
- Aspose.Ячейки (коммерческие)
- LibXL (коммерческая)
- Flexcel (коммерческий)
Вы даже можете экспортировать в «формате Excel-HTML» (пример исходного кода и документация MS).
Ответ №3:
Да, в некотором смысле вы всегда подвергаетесь такому риску, когда предполагаете, что определенная функциональность сторонней программы останется неизменной. Однако Microsoft долгое время поддерживала обратную совместимость своего программного обеспечения, поэтому, возможно, в следующем году или около того эта функция внезапно не будет удалена.
Если вы должны оставаться совместимыми, используйте другой метод для обмена данными.