Диалог сохранения файла и экспорт в лист Excel

У меня было представление таблицы данных, и я экспортировал его в лист Excel. Код работал хорошо, но когда появилось диалоговое окно Сохранить как и было сохранено файл, я не смог найти файл, и никаких ошибок не появилось.

Мой код

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();
    }
}

person Myworld    schedule 07.03.2011    source источник


Ответы (1)


Когда ты звонишь

saveFileDialog.ShowDialog()

он возвращает DialogResult, а не выбранное имя файла. Метод SaveCopyAs ожидает имя файла.

Ознакомьтесь с руководством по SaveFileDialog здесь, чтобы узнать, как получить выбранное имя файла. Должно получиться что-то вроде:

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");
}
person TurBas    schedule 07.03.2011