以编程方式对使用Excel的文件进行更改会提示用户保存更改

如果行中的某个单元格包含特定的值,我有以下方法可以从文件中删除行:

foreach (Excel.Range row in workSheet.UsedRange.Rows) { foreach (Excel.Range cell in row.Columns) { if (cell.Value == null) continue; string colVal = cell.Value.ToString().ToLower(); if (colVal.Contains(".zip") || colVal.Contains("bin") || colVal.Contains("debug") || colVal.Contains("release")) { Console.WriteLine(colVal); rowIndices.Add(rowIndex); } } rowIndex++; } rowIndices = rowIndices.OrderByDescending(i => i).ToList(); foreach (int i in rowIndices) { string rangeFormat = String.Format("{0}:{1}", "A" + i, "F" + i); workSheet.get_Range(rangeFormat, Type.Missing).Delete(Excel.XlDeleteShiftDirection.xlShiftUp); } workBook.Save(); 

我传入了一个.csv文件的path,当代码到达上面代码片段的最后一行时,会popup一个对话框,询问您是否想保存更改,就像手动打开Excel,进行更改一样然后试图closures它。 如果我打开Excel并将.csv保存为.xlsx,然后在文件上重新运行此工具,则不会提示用户。

任何人都知道我可以如何防止这个? 我使用WinMerge在2个文件夹上生成报告(保存为CSV),然后在报告中运行该工具。 将不必手动重新保存为“实际”的Exceltypes的报告。

您可以在保存之前将DisplayAlerts属性设置为False

像这样:

 Microsoft.Office.Interop.Excel.Application.[Your Excel App Variable Name].DisplayAlerts = False