Cómo pegar datos CSV en el Portapapeles de Windows con C #

Lo que estoy tratando de lograrMi aplicación genera algunos datos tabulares.Quiero que el usuario pueda iniciar Excel y haga clic en "pegar" para colocar los datos como celdas en ExcelWindows acepta un formato llamado "CommaSeparatedValue" que se usa con sus API, por lo que parece posiblePoner texto sin formato en el portapapeles funciona, pero intentar usar este formato noNOTA: Puedo recuperar correctamente los datos CSV del portapapeles, mi problema es pegar los datos CSV en el portapapeles.Lo que he intentado que no funciona

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", 
  );

En ambos casos, se coloca algo en el portapapeles, pero cuando se pega en Excel se muestra como una celda de texto de garbarge: "–§žý; pC¦yVk²ˆû"

Actualización 1: Solución alternativa usando SetText ()

Como muestra la respuesta de BFreeSetText conTextDataFormat sirve como una solución

System.Windows.Forms.Clipboard.SetText(  
  "1\t2\t3\t4\n5\t6\t7\t8", 
  System.Windows.Forms.TextDataFormat.Text
  );

He intentado esto y confirmo que ahora pegar en Excel y Word funciona correctamente. En cada caso, se pega como una tabla con celdas en lugar de texto sin formato.

Todavía tengo curiosidad por qué CommaSeparatedValue esno trabajando.

Respuestas a la pregunta(3)

Su respuesta a la pregunta