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

本文关键字:提示 保存更改 用户 文件 编程 方式使 Excel | 更新日期: 2023-09-27 18:10:08

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

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文件的路径,当代码到达上面代码片段的最后一行时,弹出一个对话框,询问您是否要保存更改,就好像您手动打开Excel,进行了更改,然后试图关闭它一样。如果我打开Excel并将。csv保存为。xlsx文件,并在文件上重新运行此工具,它不会提示用户。

有谁知道我该怎么预防吗?我使用WinMerge在2个文件夹上生成一个报告(保存为CSV),然后在报告上运行这个工具。如果不需要手动将报告重新保存为"实际"Excel类型就好了。

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

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

一样:

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