2016-05-16 9 views
-1

私はDataGridViewに多くの行と8列を持っています。私はMySQLデータベースを使用していますが、DataGridViewの2または3の選択された列データを、ボタンクリック時にヘッダーを付けてExcelシートにエクスポートしたいとします。私はすでにコードを試したが、そのコードはすべての列をoutヘッダーでコピーします。 私は自分の仕事をするようにコードを教えてください。 ありがとうどのようにdatagidviewの選択された列をExcelシートにExcelシートをエクスポートするには

ここにこれは私のコードです:しかし、このコードはoutヘッダーを持つすべての列をExcelにコピーします。

private void btnExport_Click(object sender, EventArgs e) 
    { 
     Excel.Application xlApp; 
     Excel.Workbook xlWorkBook; 
     Excel.Worksheet xlWorkSheet; 
     object misValue = System.Reflection.Missing.Value; 

     Int16 i, j; 

     xlApp = new Excel.Application(); 
     xlWorkBook = xlApp.Workbooks.Add(misValue); 

     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

     for (i = 0; i <= dgvSlipRecord.RowCount - 2; i++) 
     { 
      for (j = 0; j <= dgvSlipRecord.ColumnCount - 1; j++) 
      { 
       xlWorkSheet.Cells[i + 1, j + 1] = dgvSlipRecord[j, i].Value.ToString(); 
      } 
     } 

     xlWorkBook.SaveAs(@"d:\csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
     xlWorkBook.Close(true, misValue, misValue); 
     xlApp.Quit(); 

     releaseObject(xlWorkSheet); 
     releaseObject(xlWorkBook); 
     releaseObject(xlApp); 
    } 

    private void releaseObject(object obj) 
    { 
     try 
     { 
      System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); 
      obj = null; 
     } 
     catch (Exception ex) 
     { 
      obj = null; 
      MessageBox.Show("Exception Occured while releasing object " + ex.ToString()); 
     } 
     finally 
     { 
      GC.Collect(); 
     } 
    } 
+0

訂正にお役立てください。 – OldBoyCoder

+0

私が更新したコードを見てください。 –

答えて

0

あなたはので、私はColumnsToIncludeと呼ばれる列インデックスのシンプルなコレクションを作成しましたエクスポートする列を選択することを決定したいどのようにそれを明確にしないでください。私はこれを使ってdgvコレクションを参照します。ループヘッダーを出力に追加するためのループを追加しました。うまくいけば、これであなたの結婚を完了するのに十分です。

private void btnExport_Click(object sender, EventArgs e) 
    { 

     Microsoft.Office.Interop.Excel.Application xlApp; 
     Workbook xlWorkBook; 
     Worksheet xlWorkSheet; 
     object misValue = System.Reflection.Missing.Value; 
     int[] ColumnsToInclude = { 0, 2 }; 
     Int16 i; 

     xlApp = new Microsoft.Office.Interop.Excel.Application(); 
     xlWorkBook = xlApp.Workbooks.Add(misValue); 

     xlWorkSheet = (Worksheet)xlWorkBook.Worksheets.get_Item(1); 
     for (int ix = 0; ix < ColumnsToInclude.Length; ix++) 
      xlWorkSheet.Cells[1, ix + 1] = dgvSlipRecord.Columns[ColumnsToInclude[ix]].HeaderText; 
     for (i = 0; i <= dgvSlipRecord.RowCount - 2; i++) 
     { 
      for (int j = 0; j < ColumnsToInclude.Length; j++) 
      { 
       xlWorkSheet.Cells[i + 2, j + 1] = dgvSlipRecord[ColumnsToInclude[j], i].Value.ToString(); 
      } 
     } 

     xlWorkBook.SaveAs(@"c:\temp\csharp.net-informations.xls", XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
     xlWorkBook.Close(true, misValue, misValue); 
     xlApp.Quit(); 

     releaseObject(xlWorkSheet); 
     releaseObject(xlWorkBook); 
     releaseObject(xlApp); 
    } 
+0

ありがとうございます –

関連する問題