服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|

服务器之家 - 编程语言 - JAVA教程 - C# 中Excel导入时判断是否被占用三种方法

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

2020-09-16 15:53u013816709 JAVA教程

这篇文章主要介绍了C# 中Excel导入时 判断是否被占用三种方法的相关资料,需要的朋友可以参考下

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

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

1:Win7可以,WIN10不可以

?
1
2
3
4
5
6
7
8
9
10
11
12
13
try
    {
     //原理,如果文件可以被移动,说明未被占用
     string strPath = "C:\\123OK.Excel";
     string strPath2 = "C:\\123OK22.Excel";
     File.Move(strPath, strPath2);
     File.Move(strPath2, strPath);
    }
    catch
    {
     MessageBox.Show("文件被占用!");
     return;
    }

2:文件流

?
1
2
3
4
5
6
7
8
9
10
11
try
    {
     //原理,如果文件可写,说明未被占用
     System.IO.FileStream stream = System.IO.File.OpenWrite("文件路径");
     stream.Close();
    }
    catch
    {
     MessageBox.Show("文件被占用!");
     return;
    }

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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;
   }
  }
 }
}

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

原文链接:http://blog.csdn.net/u013816709/article/details/64922566

延伸 · 阅读

精彩推荐
  • JAVA教程struts2过滤器和拦截器的区别分析

    struts2过滤器和拦截器的区别分析

    这篇文章主要介绍了struts2过滤器和拦截器的区别,简单分析了struts2框架中过滤器和拦截器的概念与相关使用区别,需要的朋友可以参考下 ...

    沧海小强4562020-04-15
  • JAVA教程详解Java中Vector和ArrayList的区别

    详解Java中Vector和ArrayList的区别

    这篇文章主要为大家详细介绍了Java中Vector和ArrayList的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    川哥哥2922020-06-26
  • JAVA教程Mybatis开发环境搭建实现数据的增删改查功能

    Mybatis开发环境搭建实现数据的增删改查功能

    这篇文章主要介绍了 Mybatis开发环境搭建实现数据的增删改查功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下...

    leigelg4202020-08-23
  • JAVA教程java实现随机输出300题四则运算

    java实现随机输出300题四则运算

    本文主要介绍了java实现随机输出300题四则运算实例,具有很好的参考价值。下面跟着小编一起来看下吧...

    Lippman丶2262020-08-26
  • JAVA教程深入理解Mybatis二级缓存

    深入理解Mybatis二级缓存

    与一级缓存相比,二级缓存范围更大了一些,可以被多个SqlSession所共用。下面通过本文带领大家一起学习mybatis二级缓存知识,一起看看吧...

    我要这铁棒有何用3072020-07-16
  • JAVA教程Java字符判断的小例子

    Java字符判断的小例子

    从键盘上输入一个字符串,遍历该字符串中的每个字符,若该字符为小写字母,则输出“此字符是小写字母”;若为大写字母,则输出“此字符为大写字母...

    java之家4382019-10-14
  • JAVA教程java中hashCode方法与equals方法的用法总结

    java中hashCode方法与equals方法的用法总结

    总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复 ...

    java之家3942019-10-16
  • JAVA教程MyBatis快速入门之环境搭建和单表映射

    MyBatis快速入门之环境搭建和单表映射

    一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate。Hibernate作为一个著名的框架,功能十分强大。但是由于Hibernate如此强大的功能,导致了它的...

    落叶的博客3382020-09-02