正如标题所说,我尝试将剪贴板中的内容实际粘贴到 Excel 中。
我有以下代码:
Clipboard.SetText(html);
sheet.Range("A1").Value = Clipboard.GetText();
实际上,变量 html 包含一个 html 代码文件,当我这样做时,我实际上只将 html 内容粘贴到范围中,但是,如果我打开 Excel 并手动执行,选择性粘贴...我可以粘贴 html 代码,但它将代码转换为真正的表格而不是 html 代码,这是我想要的真实结果,无需手动完成。
Excel.Range.Copy() paste with Clipboard.GetText()
另一种方式是:
foreach (Excel.Worksheet sheet in workbook.Sheets)
{
foreach (Excel.Shape shape in sheet.Shapes)
{
Clipboard.SetText(html);
//doesn't work:
sheet.Range("A1").Value = sheet.PasteSpecial(Clipboard.GetText());
sheet.PasteSpecial(Clipboard.GetText()); //throws error
}
}
但是这种方式也行不通。我可以使用 html -> 图像并粘贴图像,但实际值应该是可访问的,而不是图片。
希望有大佬能说说怎么解决。
谢谢。
最佳答案
您可以尝试使用 SetData
而不是 SetText
:
Clipboard.SetData(DataFormats.Html, html);
将字符串复制到剪贴板并将其标记为 HTML(如果这在您的情况下不起作用,SetText
可能没问题)。
针对您希望插入的单元格范围调用 PasteSpecial
,考虑到您的评论:
ActiveSheet.Range("A1").PasteSpecial(
Excel.Enums.XlPasteType.xlPasteAll,
Excel.Enums.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
false, false);
请注意,通过使用 Value
属性为单元格分配新值 never 复制任何格式等。
关于C# 将剪贴板内容粘贴到 Excel 工作表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15654641/