2016-11-21 26 views
0

私は、DataGridView、SaveFileDialogを開いて[保存]をクリックしてエクセルシートをExcelにエクスポートしようとすると、WindowsアプリケーションでC#を使用して作業しています。ボタンはSaveFileDialogueの近くにありません。 多くの同様の質問がありますが、私を助けませんでした。ここでSaveFileDialogが正しく閉じないSaveFileDialogのCancleをクリックした後

スニペットコード..

Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application(); 
    Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing); 
    Microsoft.Office.Interop.Excel._Worksheet worksheet = null; 

    try 
    { 

     worksheet = workbook.ActiveSheet; 

     worksheet.Name = "ExportedFromDatGrid"; 

     int cellRowIndex = 1; 
     int cellColumnIndex = 1; 

     int count = 1; 
     progressBar1.Minimum = 1; 


     for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 

     { 
      for (int j = 0; j < dataGridView1.Columns.Count; j++) 
      { 
       if (cellRowIndex == 1) 
       { 
        worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Columns[j].HeaderText; 

        cellRowIndex++; 
        worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
        cellRowIndex = cellRowIndex - 1; 
       } 
       else 
       { 
        cellRowIndex++; 

        worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 

        cellRowIndex = cellRowIndex - 1; 
       } 
       cellColumnIndex++; 
      } 
      cellColumnIndex = 1; 
      cellRowIndex++; 

      count++; 
      progressBar1.Maximum = count; 
      progressBar1.PerformStep(); 

     } 


     SaveFileDialog saveDialog = new SaveFileDialog(); 
     saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; 

     saveDialog.FilterIndex = 2; 

     saveDialog.RestoreDirectory = true; 
     saveDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal); 

     DialogResult dialogResult = saveDialog.ShowDialog(); 

     if (dialogResult == DialogResult.OK) 
     { 
      workbook.SaveAs(saveDialog.FileName); 
      MessageBox.Show("Export Successful"); 
     } 
     else if (dialogResult == DialogResult.Cancel) 
     { 
      if (MessageBox.Show("Are you sure you want to quit without saving?", "Quitting", 
       MessageBoxButtons.YesNo) == DialogResult.No) 
      { 
       this.DialogResult = DialogResult.None; 

      } 
     } 
    } 
    catch (System.Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    finally 
    { 
     excel.Quit(); 
     workbook = null; 
     excel = null; 

    } 

出力:私が確認すると

enter image description here

enter image description here

enter image description here

が、私はそうでプレスを終了したいです、私はtを参照してくださいもう片方のポップアップが見える、つまり画像3が表示され、そのボタンをクリックすると、私のプロジェクトが動作します。このポップアップはどうやって来たの?

誰でも正しい方向に向けることができますか?

ありがとうございます。

答えて

1

Excelは保存されていないファイルを自動的に処理するため、保存されていないファイルを終了/閉じるしようとすると、メッセージがポップアップ表示されます。必要がなく保存したくない場合は、

workbook.Close(false, misValue, misValue) 

コマンドを使用してワークブックを閉じる必要があります。これらの回答を参照してください:私は正しい答えをマークし
How to close-without-save an Excel /xlsm workbook, w/ a custom function, from C#
Closing Excel application with Excel Interop without save message

+0

。提供された答えは非常に有用でした。ありがとう@SashaDu –

関連する問題