2016-07-29 5 views
0

아래 코드를 사용하여 DataGridView의 데이터를 복사 한 다음 Excel 파일에 붙여 넣습니다. 그것은 거의 모든 시스템에서 잘 작동하지만, 생산에 몇 기계, 그것은 검은 색 도트 그림으로 붙여 넣습니다Worksheet.PasteSpecial 비트 맵 이미지로 데이터 붙여 넣기

enter image description here

(나는 그것이 추측이 엑셀 파일에서이 결과를 얻을 수

private void copyAlltoClipboard() 
{ 
    //to remove the first blank column from datagridview 
    dataGridView1.RowHeadersVisible = false; 
    dataGridView1.SelectAll(); 
    DataObject dataObj = dataGridView1.GetClipboardContent(); 
    if (dataObj != null) 
     Clipboard.SetDataObject(dataObj); 
} 
private void button3_Click_1(object sender, EventArgs e) 
{ 
    copyAlltoClipboard(); 
    Microsoft.Office.Interop.Excel.Application xlexcel; 
    Microsoft.Office.Interop.Excel.Workbook xlWorkBook; 
    Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; 
    object misValue = System.Reflection.Missing.Value; 
    xlexcel = new Excel.Application(); 
    xlexcel.Visible = true; 
    xlWorkBook = xlexcel.Workbooks.Add(misValue); 
    xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
    Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[1, 1]; 
    CR.Select(); // CR is a COM Object 
    // WorkSheet.PasteSpecial(object,object,object,object,object); 
    xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);   
} 

데이터를 비트 맵 표현으로 변환). 이것은 일부 시스템에 붙여 넣 것입니다 :

enter image description here

내가 기능 PasteSpecial()를 사용했습니다. 그러나 그때 그것은 어떤 기계에서도 어떤 것도 복사하지 않을 것입니다. 나는 여기서 무엇이 잘못 될지 확신하지 못한다.

제대로 작동하고 작동하지 않는 컴퓨터에서 구성 측면에서 차이점을 찾을 수 없습니다. 이것을 처리하고 모든 컴퓨터에서 그림 대신 데이터를 표시하는 방법에 대한 아이디어가 있으십니까?

답변

2

이 문제도 발생했습니다. 위의 코드에 대한 수정 프로그램은 PasteSpecial 메서드를 올바르게 구성하는 것입니다. 메서드의 첫 번째 매개 변수는 형식이어야합니다. button3_Click_1의 마지막 줄을 다음과 같이 수정하면 모두 작동합니다.

xlWorkSheet.PasteSpecial("Text", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);   

문제를 해결 한 또 다른 옵션은 다음과 같이 행을 변경하는 것입니다. 이것은 붙여 넣은 텍스트가 링크가 아니며 아이콘이 아님을 나타냅니다.

xlWorkSheet.PasteSpecial(CR, false, false, Type.Missing, Type.Missing, Type.Missing, true);