2013-03-27 2 views
3

제목에서 알 수 있듯이 실제로 클립 보드에있는 내용을 Excel에 붙여 넣습니다.C# 클립 보드 내용을 Excel 워크 시트에 붙여 넣기

나는 다음 한 코드 : 나는 경우 실제로 변수 HTML은 HTML 코드 파일이 포함

Clipboard.SetText(html); 
sheet.Range("A1").Value = Clipboard.GetText(); 

, 나는 그런 식으로 작업을 수행 할 때, 나는 실제로 범위에 단지 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://exackoverflow.com/questions/10147152/excel-paste-special-and-add-operation – Nahum

답변

1

당신은 SetText 대신 SetData를 사용하려고 할 수 있습니다 :

Clipboard.SetData(DataFormats.Html, html); 

클립 보드에 문자열을 복사하고 (이 사건에서 작동하지 않는 경우, SetText이 확인 될 수있다) HTML로 태그를.

귀하의 의견과 관련하여 복용하면 삽입이 발생 할 셀 범위 PasteSpecial를 호출 :

ActiveSheet.Range("A1").PasteSpecial(
     Excel.Enums.XlPasteType.xlPasteAll, 
     Excel.Enums.Xl‌​PasteSpecialOperation.xlPasteSpecialOperationNone, 
     false, false); 

참고 그 사본을 Value 재산 을 결코 사용하지 의해 셀에 새로운 값을 할당 모든 형식 등

+0

그런 식으로 생각하고 있었지만 여전히 예외가 발생합니다. Microsoft 대신 NetOffice를 사용하고 있습니다. 사무실 왜냐하면 필자는 매개 변수없이 .PasteSpecial을 수행 할 수 있기 때문입니다. 나는 거기에서 관리자로부터의 회신이 어셈블리 문제인지 또는 잘못된 구현인지 묻기를 기다릴 것이다. sheet.Range ("A1") .PasteSpecial (Excel.Enums.XlPasteType.xlPasteAll, Excel.Enums.XlPasteSpecialOperation.xlPasteSpecialOperationAdd, false, false); 하지만 여전히 일부 예외 오류가 발생합니다. – mike27015

+0

나는 이미 템플릿의 기존 값을 가지고 있기 때문에 xlPasteSpecialOperationAdd를 사용했습니다. xlPasteSpecialOperationNone을 사용하여 이전 값을 유지하면 예외가 발생하지만 이전 기존 값의 계산을 수행하려고합니다. RTFM은 당신이 나에게 적절한 오퍼레이션을 주었기 때문에 읽혔습니다. – mike27015

+0

복사 용으로 만 사용됩니다. Clipboard.SetText (html); sheet.Range ("A1"). PasteSpecial(); 그는 Clipboard.SetData (DataFormats.Htlm, html)가 마음에 들지 않습니다. – mike27015

0

사용 : xlWorkSheet.PasteSpecial (누락 값, 거짓, 거짓, 누락 값, 누락 값, 누락 값, 누락 값, 누락 값);

// 아래는 내가 그런

Clipboard.GetData("XML Spreadsheet"); 

를 사용하여 클립 보드에서 복사 된 세포를 얻을 수 있었다 전체 코드

  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.SetData("XML Spreadsheet", originalObject); 

해피 코딩!

관련 문제