我想要完成的事情
- 我的应用程序生成一些表格数据
- 我希望用户能够启动 Excel 并单击“粘贴”以将数据作为单元格放置在 Excel 中
- Windows 接受一种名为“CommaSeparatedValue”的格式,它与它的 API 一起使用,所以这似乎是可能的
- 将原始文本放在剪贴板上是可行的,但尝试使用这种格式却不行
- 注意:我可以正确地从剪贴板检索 CSV 数据,我的问题是将 CSV 数据粘贴到剪贴板。
我尝试过的不起作用
剪贴板.SetText()
System.Windows.Forms.Clipboard.SetText(
"1,2,3,4\n5,6,7,8",
System.Windows.Forms.TextDataFormat.CommaSeparatedValue
);
剪贴板.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 的回答所示,使用TextDataFormat的SetText作为一种解决方法
System.Windows.Forms.Clipboard.SetText(
"1\t2\t3\t4\n5\t6\t7\t8",
System.Windows.Forms.TextDataFormat.Text
);
我已经尝试过了,并确认现在粘贴到 Excel 和 Word 中可以正常工作。在每种情况下,它都粘贴为带有单元格而不是纯文本的表格。
仍然好奇为什么 CommaSeparatedValue不起作用。