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

时间:2015-08-26 18:51:00

标签: c# .net excel csv

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

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类型。

0 个答案:

没有答案