2013-03-27 287 views
3

正如标题所说,我尝试将剪贴板中的内容粘贴到Excel中。C#将剪贴板内容粘贴到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 - >图像来粘贴图像,但实际值应该可以访问,而不是图片。

希望有人可以澄清如何解决它。

谢谢。

+0

可能重复? http://stackoverflow.com/questions/10147152/excel-paste-special-and-add-operation – Nahum 2013-03-27 08:50:08

回答

1

您可以尝试使用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财产从未副本分配的单元格的新值任何格式等。

+0

我正在考虑这种方式,但它仍然引发了一个例外,我使用NetOffice而不是Microsoft.Office这就是为什么,因为我可以做一个没有参数的.PasteSpecial库。我会等待管理员的回复,询问是否可能是汇编问题或错误实施。它似乎与编译:sheet.Range(“A1”)。PasteSpecial(Excel.Enums.XlPasteType.xlPasteAll,Excel.Enums.XlPasteSpecialOperation。xlPasteSpecialOperationAdd,false,false);但仍然有一些异常错误。 – mike27015 2013-03-27 09:11:32

+0

我用xlPasteSpecialOperationAdd做了它,因为我已经有了一个模板的现有值......并且想要从之前的现有值进行计算,如果我用xlPasteSpecialOperationNone离开它,保留旧值但仍然会出现异常错误。阅读RTFM,因为你甚至给了我正确的操作。 – mike27015 2013-03-27 09:26:30

+0

仅供复制使用 Clipboard.SetText(html); sheet.Range(“A1”)。PasteSpecial(); 他不喜欢Clipboard.SetData(DataFormats.Htlm,html); – mike27015 2013-03-27 09:48:35

0

使用此: xlWorkSheet.PasteSpecial(Missing.Value,false,false,Missing.Value,Missing.Value,Missing.Value,Missing.Value);

//下面是完整的代码

  Microsoft.Office.Interop.Excel.Workbook xlWorkBook; 
      Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; 

      Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
      xlApp.Visible = true; 
      xlApp.UserControl = true; 
      xlApp.WindowState = Excel.XlWindowState.xlMaximized; 
      xlWorkBook = xlApp.Workbooks.Add(Type.Missing); 
      // xlWorkBook = xlApp.Workbooks.Open(excel_filename); 
      xlApp.ActiveWorkbook.Sheets[1].Activate(); 
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
      xlWorkSheet.PasteSpecial(Missing.Value, false, false, Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
      xlWorkBook.SaveAs(save_file_name); 
      Console.WriteLine("saved file name" + save_file_name); 
      xlWorkBook.Close(); 
      xlApp.Quit(); 
0

我设法用

Clipboard.GetData("XML Spreadsheet"); 

然后获取剪贴板复制的单元格,之后我做了一些的复制粘贴在我的代码,我把它放回

Clipboard.SetData("XML Spreadsheet", originalObject); 

快乐编码!