Чего я пытаюсь достичь
- Мое приложение генерирует некоторые табличные данные
- Я хочу, чтобы пользователь мог запускать 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 оно отображается как одна ячейка текста garbarge: "–§žý; 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 не работает.