C# 将剪贴板内容粘贴到 Excel 工作表中

标签 c# excel clipboard worksheet-function

正如标题所说,我尝试将剪贴板中的内容实际粘贴到 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.Xl‌​PasteSpecialOperation.xlPasteSpecialOperationNone,
         false, false);

请注意,通过使用 Value 属性为单元格分配新值 never 复制任何格式等。

关于C# 将剪贴板内容粘贴到 Excel 工作表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15654641/

相关文章:

c# - 简单的伪随机算法

vb.net - 如何使用VB在Excel 2007 VSTO中生成单元格单击事件?

javascript - 使用 JavaScript 重新创建 Skype 报价

vba - Excel 宏可将工作表另存为启用宏的新工作簿

java - 如何读取 Excel 日期并将其存储到我的数据库中?

javascript - 使用 document.execCommand ('copy' 复制到剪贴板)因大文本而失败

Android 剪贴板更改监听器在 4.3 中中断了吗?

c# - 如何在没有 "Enviroment"的情况下获取 Windows 通用应用程序中某些特殊文件夹的路径

c# - 将属性添加到 XML 文件 Linq C#

c# - 如何在我的新 CSPROJ 类库中包含带有 native dll 的 NuGet 包?