关闭时禁用 Interop.Excel 的默认保存提示
Posted
技术标签:
【中文标题】关闭时禁用 Interop.Excel 的默认保存提示【英文标题】:Disable Interop.Excel's Default Save Prompt on Close 【发布时间】:2017-03-16 10:22:26 【问题描述】:我正在使用将一堆计算数据保存到 excel 文件中
if (result == DialogResult.OK && saveFileDialog1.FileName != "")
xl.DisplayAlerts = false;
wb.SaveAs(fn, XlFileFormat.xlOpenXMLWorkbook, Missing.Value,
Missing.Value, false, false, XlSaveAsAccessMode.xlNoChange,
XlSaveConflictResolution.xlUserResolution, true,
Missing.Value, Missing.Value, Missing.Value);
wb.Close(true, misValue, misValue);
xl.Quit();
releaseObject(ws);
releaseObject(wb);
releaseObject(xl);
else if (result == DialogResult.Cancel)
wb.Close(true, misValue, misValue);
xl.Quit();
releaseObject(ws);
releaseObject(wb);
releaseObject(xl);
当我按下OK
时一切正常,但如果我CANCEL
保存,那么会出现另一个“通用”保存窗口?我在项目中没有其他SaveFileDialogs
,我的假设是它来自 Excel 对象保存文件对话框,但我真的不知道我该如何摆脱它?
xl
是 interop
对象,ws
是工作表,wb
是工作簿
TA
【问题讨论】:
Excel interop: saving workbook without showing save dialog的可能重复 不是重复的!我想要保存对话框,而不是第二个保存对话框。该线程是关于 workbook.SaveAs (我已经在使用)。不过感谢您的研究! 【参考方案1】:在调用 Close 方法之前将工作簿对象的“已保存”属性设置为 true。
像这样:
else if (result == DialogResult.Cancel)
wb.Saved = true;
wb.Close(true, misValue, misValue);
xl.Quit();
releaseObject(ws);
releaseObject(wb);
releaseObject(xl);
希望这会有所帮助。
【讨论】:
以上是关于关闭时禁用 Interop.Excel 的默认保存提示的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中使用 Microsoft.Office.Interop.Excel.Application 保存打开的文档?
加载类型库/DLL (Microsoft.Office.Interop.Excel.Application) 时出错