我想要达成的目标
- 我的应用程序生成一些表格数据
- 我希望用户能够启动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的答案所示,使用TextDataFormat的SetText()可以作为解决方法。
System.Windows.Forms.Clipboard.SetText(
"1\t2\t3\t4\n5\t6\t7\t8",
System.Windows.Forms.TextDataFormat.Text
);
我已经尝试过这个方法,并确认现在可以正确地将内容粘贴到Excel和Word中。每次粘贴时,它都会作为带有单元格的表格而不是纯文本进行。
仍然好奇为什么逗号分隔值(CommaSeparatedValue)无法使用。