Comment faire pour coller les données au format CSV, de presse-papiers de Windows avec C#

Ce que je suis en train d'accomplir

  • Mon application génère des données tabulaires
  • Je veux que l'utilisateur soit en mesure de lancer Excel et cliquez sur "coller" pour placer les données comme les cellules dans Excel
  • Windows accepte un format appelé "CommaSeparatedValue" qui est utilisé avec l'Api si cela semble possible
  • Mise en texte brut dans le presse-papiers œuvres, mais en essayant d'utiliser ce format n'
  • NOTE: je peux correctement récupérer des données au format CSV dans le presse-papiers, mon problème est de coller les données CSV dans le presse-papiers.

Ce que j'ai essayé ça ne fonctionne pas

Presse-papiers.SetText()

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

Presse-papiers.SetData()

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

Dans les deux cas, quelque chose est placé dans le presse-papiers, mais lorsqu'il est collé dans Excel, il apparaît comme une cellule de garbarge texte: "–§žý;pC¦yVk2ˆû"

Mise à jour 1: solution de Contournement avec SetText()

Comme alibres bd'agir expositions de la réponse de SetText avec TextDataFormat sert comme une solution de contournement

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

J'ai essayé et confirmer que maintenant le collage dans Excel et Word fonctionne correctement. Dans chaque cas, il colle comme un tableau avec des cellules au lieu de clair.

Toujours curieux de savoir pourquoi CommaSeparatedValue est pas de travail.

InformationsquelleAutor namenlos | 2008-12-01