2012-08-30 8 views
2

datgrid를 Excel 문서로 내보내야하지만 Excel 문서로 내보낼 때 오류가 발생합니다. 아래는 내가 수출하는 데 사용하는 코드이며, Excel 문서를 열고 헤더가 있습니다.하지만 각 셀의 값은 Excel 셀의 System.Data.DataRowView를보고 있어야합니다. 내가해야 할 일은 모자 행의 값을 가져와 Excel 통합 문서에 삽입하는 것입니다.DataGrid를 Excel 문서로 내보내기

도움이 필요하거나 튜토리얼 링크. 당신이 항목을 반복하는 루프 for (int Idx = 0; Idx < dataGrid1.Items.Count; Idx++)와 피터

Microsoft.Office.Interop.Excel.Application excel = null; 
Microsoft.Office.Interop.Excel.Workbook wb = null; 

object missing = Type.Missing; 
Microsoft.Office.Interop.Excel.Worksheet ws = null; 
Microsoft.Office.Interop.Excel.Range rng = null; 

try 
{ 
    excel = new Microsoft.Office.Interop.Excel.Application(); 
    wb = excel.Workbooks.Add(); 
    ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet; 

    for (int Idx = 0; Idx < dataGrid1.Columns.Count; Idx++) 
    { 
     // Puts Column Header into excel work sheet 
     ws.Range["A1"].Offset[0, Idx].Value = dataGrid1.Columns[Idx].Header; 
    } 

    for (int Idx = 0; Idx < dataGrid1.Items.Count; Idx++) 
    { 
     ws.Range["A2"].Offset[Idx].Resize[1, dataGrid1.Columns.Count].Value = 
     dataGrid1.Items[Idx].ToString(); 
    } 

    excel.Visible = true; 
    wb. 
} 
catch (COMException ex) 
{ 
    MessageBox.Show("Error accessing Excel: " + ex.ToString()); 
} 
catch (Exception ex) 
{ 
    MessageBox.Show("Error: " + ex.ToString()); 
} 

답변

0

의 데이터 그리드의 즉 행. 이러한 항목이나 행은 분명히 DataRowView이므로 ToString은 "System.Data.DataRowView"를 제공합니다.

또한 셀 즉, 행의 각 항목을 반복해야합니다 :이 테스트를하지 않은 엑셀 API에 대해 아무것도 몰라

for (int rowIndex = 0; rowIndex < dataGrid1.Items.Count; rowIndex++) 
{ 
    for (int columnIndex = 0; columnIndex < dataGrid1.Columns.Count; columnIndex++) 
    { 
     ws.Range["A2"].Offset[rowIndex, columnIndex].Value = 
      dataGrid1.Items[rowIndex][columnIndex].ToString(); 
    } 
} 

주, 그래서 내가 ' ws.Range["A2"].Offset[rowIndex, columnIndex]이 맞는지 확실하지 않습니다.

+0

감사 : 여기에 행 내부의 값에 액세스하려면

당신에게 필요한 무엇 – Peter

1

아무도 같은 문제가있는 경우 해결책을 찾았습니다. 그것을 어쨌든 시도해하고 :) 작동하는지 테스트보고 i'l,

for (int columnIndex = 0; columnIndex < dataGrid1.Columns.Count; columnIndex++) 
{ 
    ws.Range["A2"].Offset[rowIndex, columnIndex].Value = 
     (dataGrid1.Items[rowIndex] as DataRowView).Row.ItemArray[columnIndex].ToString() 
} 
관련 문제