Как вставить данные CSV в буфер обмена Windows с помощью C#C#

Место общения программистов C#
Ответить
Anonymous
 Как вставить данные CSV в буфер обмена Windows с помощью C#

Сообщение Anonymous »

Чего я пытаюсь достичь
  • Мое приложение генерирует некоторые табличные данные.
  • Я хочу, чтобы пользователь мог запустить Excel и нажать «Вставить», чтобы поместить данные в виде ячеек в Excel.
  • Windows принимает формат под названием «CommaSeparatedValue», который используется с ее API, поэтому это кажется возможным.
  • Помещение необработанного текста в буфер обмена работает, а попытка использовать этот формат — нет.
  • ПРИМЕЧАНИЕ. Я могу правильно извлечь данные CSV из буфера обмена, моя проблема заключается в вставке данных CSV в буфер обмена.
То, что я пробовал, не работает

Clipboard.SetText()

Код: Выделить всё

System.Windows.Forms.Clipboard.SetText(
"1,2,3,4\n5,6,7,8",
System.Windows.Forms.TextDataFormat.CommaSeparatedValue
);
Clipboard.SetData()

Код: Выделить всё

System.Windows.Forms.Clipboard.SetData(
System.Windows.Forms.DataFormats.CommaSeparatedValue,
"1,2,3,4\n5,6,7,8",
);
В обоих случаях что-то помещается в буфер обмена, но при вставке в Excel оно отображается как одна ячейка мусорного текста: «–§žý;pC¦yVk²ˆû»

Обновление 1: обходной путь с использованием SetText()

Как показывает ответ BFree, SetText с TextDataFormat служит обходным решением

Код: Выделить всё

System.Windows.Forms.Clipboard.SetText(
"1\t2\t3\t4\n5\t6\t7\t8",
System.Windows.Forms.TextDataFormat.Text
);
Я попробовал это и подтверждаю, что теперь вставка в Excel и Word работает правильно. В каждом случае он вставляется в виде таблицы с ячейками вместо обычного текста.

Все еще любопытно, почему CommaSeparatedValue не работает.

Подробнее здесь: https://stackoverflow.com/questions/329 ... th-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»