我正在尝试从excel文件中读取数据。我的问题是当我读完它时总会出现一个对话框要求保存。我怎么能把它关掉呢?
这是我的代码:
Missing missing = Missing.Value;
Excel.Application _app = new Excel.Application();
Excel.Workbook _workBook = _app.Workbooks.Open(e.Argument.ToString());
Excel.Worksheet _workSheet = _workBook.ActiveSheet;
Excel.Range _range = _workSheet.UsedRange;
BackgroundWorker bw = sender as BackgroundWorker;
for (int i = 0; i < _range.Rows.Count; i++) {
if (_workSheet.Cells[i + 2, 1].Value != null && _workSheet.Cells[i + 2, 2].Value != null)
{
inputList.Add(new infoInput(_workSheet.Cells[i + 2, 1].Value, _workSheet.Cells[i + 2, 1].Value));
}
bw.ReportProgress(((i + 1) * 100)/_workSheet.UsedRange.Rows.Count);
}
_workBook.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(_workBook);
_app.DisplayAlerts = false;
_app.Quit();
P / S抱歉我的英文!提前谢谢。
答案 0 :(得分:2)
您应该将DisplayAlerts
属性设置为FALSE,以便在调用.Quit()
方法时阻止此消息。
_app.DisplayAlerts = false;
_app.Quit();
如果使用此方法时未打开的工作簿已打开,则Microsoft Excel将显示一个对话框,询问您是否要保存 变化。您可以通过在使用之前保存所有工作簿来防止这种情况 退出方法或将DisplayAlerts属性设置为False。什么时候 此属性为False,Microsoft Excel不显示该对话框 当你退出未保存的工作簿;它退出而没有保存它们。
答案 1 :(得分:1)
_workBook.Close(SaveChanges:false)
或
WB.Close(false, Type.Missing, Type.Missing);
根据这个链接:
如果省略此参数,将出现一个保存对话框。
如果工作簿没有更改,则忽略此参数。如果 工作簿有更改,工作簿出现在其他工作簿中 打开窗口,这个参数被忽略了。如果有变化 工作簿但工作簿不会出现在任何其他打开的窗口中, 此参数指定是否应保存更改,如图所示 以下列表。
真。将更改保存到工作簿。如果还没有文件 与工作簿关联的名称,然后使用FileName。如果是FileName 省略,要求用户提供文件名。
假。不保存对工作簿的更改。
略。显示一个对话框,询问用户是否保存 变化。
答案 2 :(得分:0)
我遇到了同样的问题。所有关于宏、修复 MS Office 等的建议都没有帮助——尽管它们与问题有关......
事实证明,我不小心将电子表格的一个单元格中的日期从有效日期(例如:02/06/2021)更改为字母“H”。我不知道我什么时候做的,但这不是临时更改——也就是说,我显然在更改后按了 Enter 键或箭头键。有趣的是,该单元格没有链接到任何宏或公式;它只是被格式化为日期。当我修复日期并保存电子表格时,问题就消失了。