Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Excel以编程方式更改文件会提示用户保存更改_C#_.net_Excel_Csv - Fatal编程技术网

C# 使用Excel以编程方式更改文件会提示用户保存更改

C# 使用Excel以编程方式更改文件会提示用户保存更改,c#,.net,excel,csv,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()

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

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在两个文件夹上生成报告(另存为CSV),然后在报告上运行此工具。最好不必手动将报告重新保存为“实际”Excel类型。

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

像这样:

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

我认为您可以使用而不是
Save
方法,传入
Type.Missing
作为您不希望设置的任何参数。此外,您可以在保存工作簿之前尝试设置Microsoft.Office.Interop.Excel.Application。[您的Excel应用程序变量名].DisplayAlerts=False。您可能希望在之后重新启用它。@Soulfire使用
SaveAs
仍会提示用户,但按照您的建议设置
DisplayAlerts
已修复此问题。如果您愿意将此作为答复提交,我很乐意接受。非常感谢!谁也想不到会有这样的旗帜。