我有一个小工具,用于清理Excel工作簿。当我尝试打开已在Excel中打开的清理文件时,它会抛出
'System.IO.IOException'。
我是否可以通过某种方式检查代码,以便检查工作簿是否已打开,如果是,则抛出一个错误框,以便用户可以关闭它并关闭Excel,然后再继续?
public bool CleanFile(string docPath)
{
// Open the document for editing.
using (SpreadsheetDocument document = SpreadsheetDocument.Open(docPath, true))
答案 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;
}