Save file dialog and export to Excel sheet

I had a datagrid view and I exported it to an Excel worksheet. The code worked well, but when the Save As dialog box appeared and the file was saved, I could not find the file and no errors appeared.

My code

private void button1_Click(object sender, EventArgs e) { try { using (new ExcelUILanguageHelper()) { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "Execl files (*.xls)|*.xls"; saveFileDialog.FilterIndex = 0; saveFileDialog.RestoreDirectory = true; saveFileDialog.CreatePrompt = true; saveFileDialog.Title = "Export Excel File To"; Excel.ApplicationClass ExcelApp = new Excel.ApplicationClass(); ExcelApp.Application.Workbooks.Add(Type.Missing); ExcelApp.Columns.ColumnWidth = 30; for (int i = 0; i < DGData.Rows.Count; i++) { DataGridViewRow row = DGData.Rows[i]; for (int j = 0; j < row.Cells.Count; j++) { ExcelApp.Cells[i + 1, j + 1] = row.Cells[j].ToString(); } } ExcelApp.ActiveWorkbook.SaveCopyAs(saveFileDialog.ShowDialog()); ExcelApp.ActiveWorkbook.Saved = true; ExcelApp.Quit(); } } catch (Exception ex) { MessageBox.Show("Cancelled Operation"); this.Close(); } } 
+4
source share
1 answer

When you call

 saveFileDialog.ShowDialog() 

it returns DialogResult, not the selected file name. The SaveCopyAs method expects a file name.

Check out the SaveFileDialog tutorial here to learn how to get the selected file name. It should be something like:

 private void Form1_DoubleClick(object sender, System.EventArgs e) { if( this.saveFileDialog1.ShowDialog() == DialogResult.OK ) { MessageBox.Show("The Save button was clicked or the Enter key was pressed" + "\nThe file would have been saved as " + this.saveFileDialog1.FileName); } else MessageBox.Show("The Cancel button was clicked or Esc was pressed"); } 
+5
source

Source: https://habr.com/ru/post/1342615/


All Articles