2012-10-07 4 views
2

2 개의 datgridviews가있어 헤더를 복사하려고 시도하고 Excel 시트에 값을 지정합니다. 첫 번째 루프는이 두 번째 DataGridView를 첫 번째 datagirdview특정 Excel 셀에 대한 Datagridview

for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) 
      { 
       worksheet.Cells[7, i] = dataGridView1.Columns[i - 1].HeaderText; 
      } 



      // storing Each row and column value to excel sheet 
      for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
      { 
       for (int j = 0; j < dataGridView1.Columns.Count; j++) 
       { 
        worksheet.Cells[i + 8, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
       } 
      } 

을 위해 잘 작동하고 나는 헤더를 복사하기 위해 노력하고있어 그것은 값입니다.

첫 번째 datagridview 헤더 값이 7 번째 행 셀 D7에서 완료되고 행 값이 8 번째 행의 셀 D8에서 완료되었습니다.

두 번째 datagridview 헤더를 E7에서 7 번째 행으로, 행 값을 8 번째 행의 E8에서 가져 오려고합니다.

//Primary Continuation 
     for (int i = 7; i < dataGridView2.Columns.Count + 1; i++) 
     { 
      worksheet.Cells[7, i] = dataGridView2.Columns[i - 1].HeaderText; 
     } 



     // storing Each row and column value to excel sheet 
     for (int i = 0; i < dataGridView2.Rows.Count - 1; i++) 
     { 
      for (int j = 0; j < dataGridView2.Columns.Count; j++) 
      { 
       worksheet.Cells[i + 8, j + 1] = dataGridView2.Rows[i].Cells[j].Value.ToString(); 
      } 
     } 

답변

1

그렇다면 올바르게 이해하면 Excel 시트에 두 테이블을 나란히 놓을 수 있습니까? 어떤 경우에는 두 번째 루프의 오프셋 값이 섞여있는 것 같습니다. DataGridView. 이 루프에서 :

//Primary Continuation 
for (int i = 7; i < dataGridView2.Columns.Count + 1; i++) 
{ 
    worksheet.Cells[7, i] = dataGridView2.Columns[i - 1].HeaderText; 
} 

대신의 두 번째 DataGridView의 위치가되기 때문에, 당신은 엑셀 시트에서 대상을 상쇄하기 위해 필요 (그리드에 소스 데이터의 위치를 ​​드라이브) (7)하여 수를 상쇄 첫 번째와 동일합니다. 첫 번째 루프를 복제 할 수 있지만 대상을 약간 변경하십시오. 실제로 동일한 것이 최종 루프에도 적용됩니다.

값을 복사하는 루프가 최종 행을 놓치게됩니다. 의도적인지 여부는 확실하지 않지만 수정했습니다. 두 번째 루프 세트가 어떻게 나타나는지 보여줍니다.

//Primary Continuation 
for (int i = 1; i < dataGridView2.Columns.Count + 1; i++) 
{ 
    worksheet.Cells[7, i + dataGridView2.Columns.Count] = dataGridView2.Columns[i - 1].HeaderText; 
} 

// storing Each row and column value to excel sheet 
for (int i = 0; i < dataGridView2.Rows.Count; i++) 
{ 
    for (int j = 0; j < dataGridView2.Columns.Count; j++) 
    { 
     worksheet.Cells[i + 8, j + 1 + dataGridView2.Columns.Count] = dataGridView2.Rows[i].Cells[j].Value.ToString(); 
    } 
} 

당신은 분명히 영향은 눈에 띄는 것 있지만, 더 많은 데이터 (실행 시간에 자르고, 루프의 당신의 두 세트의 차이점은 이제 무시할 수 있기 때문에, 당신은 쉽게 그들을 함께 결합 할 수 있다는 것을 알 수 있습니다).

+0

해결책 주셔서 감사합니다. – linguini

관련 문제