我正在使用c#处理windows应用程序,当我试图从DataGridView导出到excel时,SaveFileDialog打开,如果单击Save‘,但单击Cancel按钮时,它不是关闭SaveFileDialogue。我知道有许多类似的问题,但没有帮助我。
这里的代码片段。
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;
}产出:



当我确认时,我想退出并按下“是”,我看到后面的另一个弹出窗口是可见的,即图像3。在clik on cancle按钮之后,我的项目工作。这个弹出式是怎么来的?
谁能给我指明正确的方向?
提前谢谢。
发布于 2016-11-21 07:19:19
问题是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
https://stackoverflow.com/questions/40714385
复制相似问题