首页 > 编程 > Java > 正文

C# 中Excel导入时判断是否被占用三种方法

2019-11-26 12:30:33
字体:
来源:转载
供稿:网友

C# 中Excel导入时 判断是否被占用三种方法

Excel导入时 判断是否被占用,三种方法:

1:Win7可以,WIN10不可以

try     {      //原理,如果文件可以被移动,说明未被占用      string strPath = "C://123OK.Excel";      string strPath2 = "C://123OK22.Excel";      File.Move(strPath, strPath2);      File.Move(strPath2, strPath);     }     catch     {      MessageBox.Show("文件被占用!");      return;     } 

2:文件流

try     {      //原理,如果文件可写,说明未被占用      System.IO.FileStream stream = System.IO.File.OpenWrite("文件路径");      stream.Close();     }     catch     {      MessageBox.Show("文件被占用!");      return;     } 

3:WIN32 API调用(强烈推荐)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;  using System.IO; using System.Runtime.InteropServices;  namespace WindowsFormsApplication1 {  public partial class Form1 : Form  {   [DllImport("kernel32.dll")]   public static extern IntPtr _lopen(string lpPathName, int iReadWrite);   [DllImport("kernel32.dll")]   public static extern bool CloseHandle(IntPtr hObject);   public const int OF_READWRITE = 2;   public const int OF_SHARE_DENY_NONE = 0x40;   public readonly IntPtr HFILE_ERROR = new IntPtr(-1);    public Form1()   {    InitializeComponent();   }    private void button1_Click(object sender, EventArgs e)   {    try    {     string vFileName = @"c:/123.xlsx";     if (!File.Exists(vFileName))     {      MessageBox.Show("文件都不存在!");      return;     }     IntPtr vHandle = _lopen(vFileName, OF_READWRITE | OF_SHARE_DENY_NONE);     if (vHandle == HFILE_ERROR)     {      MessageBox.Show("文件被占用!");      return;     }     CloseHandle(vHandle);     MessageBox.Show("没有被占用!");    }    catch (Exception ex)    {     throw ex;    }   }  } } 

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表