如何检查工作簿是否已打开

时间:2015-09-22 19:26:32

标签: c# exception

我有一个小工具,用于清理Excel工作簿。当我尝试打开已在Excel中打开的清理文件时,它会抛出

  

'System.IO.IOException'。

我是否可以通过某种方式检查代码,以便检查工作簿是否已打开,如果是,则抛出一个错误框,以便用户可以关闭它并关闭Excel,然后再继续?

public bool CleanFile(string docPath)
{
    // Open the document for editing.
    using (SpreadsheetDocument document = SpreadsheetDocument.Open(docPath, true))

1 个答案:

答案 0 :(得分:1)

您可以在打开文档之前使用此方法,如果它返回true,则提醒用户。

    public static bool IsFileOpen(string path)
    {
        FileStream stream = null;
        try
        {
            stream = File.Open(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        }
        catch (IOException ex)
        {
            if (ex.Message.Contains("being used by another process"))
                return true;
        }
        finally
        {
            if (stream != null)
                stream.Close();
        }

        return false;
    }