2016-11-09 11 views
1

私は単純なアプリケーションを持っています。 私のアプリケーションはcsvを読み込み、いくつかのデータを変更してエクセルにエクスポートします。C#WindowsフォームExcelにエクスポート

Application

私はクリックして "Exportarを..." それがエクスポートされます。 コードは以下のとおりです。

private void cmdExport_Click(object sender, EventArgs e) 
    { 
     cmdExport.Enabled = false; 
     cmdSelecionar.Enabled = false; 

     //Copy DataGridView to clipboard 
     dgvMain.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; 
     dgvMain.MultiSelect = true; 
     dgvMain.SelectAll(); 

     DataObject dataObj = dgvMain.GetClipboardContent(); 
     if (dataObj != null) 
      Clipboard.SetDataObject(dataObj); 

     //Open an excel instance and paste the copied data 
     Excel.Application xlexcel; 
     Excel.Workbook xlWorkBook; 
     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(); 
     xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true); 

     cmdSelecionar.Enabled = true; 
    } 

問題:私はエクスポートすると 、それは初めに空白の列、 "A" の列を追加します。 これはなぜ発生していますか? 私のコードで何が間違っていますか?

Excelの印刷は、以下:ライトブルーが一番上に>矢印で列を強調されているように

Excel exported

答えて

2

をあなたはあなたのDataGridViewの行ヘッダを持って、あなたのイメージでそれを見ることができます。

あなたはまた、あなたが貼り付け後の最初の列を削除することができdgvMain.RowHeadersVisible = false;

でそれらを無効にすることができ、それらを必要としない場合:

Excel.Range range = (Excel.Range)xlWorkSheet.get_Range("A1", Missing.Value); 
range.EntireColumn.Delete(Missing.Value); 
+0

dgvMain.RowHeadersVisible =偽;問題を解決しました。 ありがとうございます@エスクルク –

0

あなたは大丈夫です、クリップボードから貼り付けますが、私されていますクリップボードのデータに空白の列が含まれていると思われます。

0

以下の作品かどうかをチェックできます:

Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[A1, 1]; 
Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[0, 1]; 
関連する問題