Экспорт объектов в Excel C# через буфер обмена

375
07 сентября 2017, 15:46

Нужно скопировать содержимое List через буфер обмена в таблицу Excel. Пройдёт ли преобразование List в Datatable с последующей вставкой в таблицу? Или есть другие способы? Желательно с примером.

Answer 1

Я написал такой кусочек кода:

var data = Clipboard.GetDataObject();
foreach (var f in data.GetFormats())
    Console.WriteLine(f);

Скопировал несколько ячеек в Excel в буфер обмена и запустил. Для Excel 2010 вывод получился такой:

EnhancedMetafile
System.Drawing.Imaging.Metafile
MetaFilePict
Bitmap
System.Drawing.Bitmap
System.Windows.Media.Imaging.BitmapSource
Biff12
Biff8
Biff5
SymbolicLink
DataInterchangeFormat
XML Spreadsheet
HTML Format
Text
UnicodeText
System.String
CSV
Rich Text Format
Embed Source
Object Descriptor
Link Source
Link Source Descriptor
Link
Format129

Т.е. из Excel данные можно вставить в одном из этих форматов, соответственно можно предположить, что и вставка в Excel может быть выполнена в одном из этих форматов. Проще всего сделать это в CSV, просто отделите свои элементы символом ; если их нужно разместить горизонтально или символом перевода строки, если вертикально.
Например:

List<int> list = new List<int> { 10, 15, 23, 17, -8, 999, 4, 0 };
Clipboard.SetData(DataFormats.CommaSeparatedValue, string.Join("\n", list));

Если после выполнения этого кусочка кода выполнить вставку в Excel, то вставится столбец чисел.

Обратите внимание, при использовании формата CSV и строковых данных, если строка содержит символ ;, то ее нужно обернуть в кавычки "...", если при этом в строке также содержатся символы кавычек, то их нужно будет продублировать: "...""...""..."

READ ALSO
Публикация приложения в C#

Публикация приложения в C#

Есть проект на C# в Visual Studio 2017

426
Проблема с Entity Framework. C#

Проблема с Entity Framework. C#

Всем привет, 3 вопроса:

556
Unity, C# перемещение камеры

Unity, C# перемещение камеры

Добрый деньНе могу как можно реализовать следующее перемещение: если нажата ЛКМ то перемещать камеру так как будто перемещаешь объект то есть...

344
DDD и справочные таблицы

DDD и справочные таблицы

Исходные условия:

385