2013-03-27 171 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); 

快樂編碼!