获取已经打开的Excel进程中的文件资源属性
2007-12-17 19:10
375 查看
今天注册了blog,先来一篇简单实用的文章吧~
以前大家可能碰到过这样的需求,
要求程序检查.xls文件有没有被Excel打开着,我想很多朋友都会想到利用系统api.获得进程窗体的句柄等...
前面一段时间,正好碰到了这样需求,所以调查了一下,其实oledb公开了一些api,可供我们使用.
如代码
[DllImport("ole32.dll")]
public static extern int GetRunningObjectTable(int reserved, out IRunningObjectTable prot);
[DllImport("ole32.dll")]
public static extern int CreateBindCtx(int reserved, out IBindCtx ppbc);
private Hashtable GetRunningObjectTable()
private bool XlsIsOpen(string fileName)
{
bool XlsIsOpen = false;
Hashtable rot = GetRunningObjectTable();
bool isOk = false;
foreach (object o in rot.Values)
{
if (isOk)
{
break;
}
Excel.Application a = o as Excel.Application;
if (a != null)
{
Excel.Workbooks wbooks = a.Workbooks;
foreach (Excel.Workbook wb in wbooks)
{
if (wb.Name == fileName)
{
XlsIsOpen = true;
isOk = true;
break;
}
}
//a.DisplayAlerts = false;
//a.Quit();
}
}
return XlsIsOpen;
}
以前大家可能碰到过这样的需求,
要求程序检查.xls文件有没有被Excel打开着,我想很多朋友都会想到利用系统api.获得进程窗体的句柄等...
前面一段时间,正好碰到了这样需求,所以调查了一下,其实oledb公开了一些api,可供我们使用.
如代码
[DllImport("ole32.dll")]
public static extern int GetRunningObjectTable(int reserved, out IRunningObjectTable prot);
[DllImport("ole32.dll")]
public static extern int CreateBindCtx(int reserved, out IBindCtx ppbc);
private Hashtable GetRunningObjectTable()
private bool XlsIsOpen(string fileName)
{
bool XlsIsOpen = false;
Hashtable rot = GetRunningObjectTable();
bool isOk = false;
foreach (object o in rot.Values)
{
if (isOk)
{
break;
}
Excel.Application a = o as Excel.Application;
if (a != null)
{
Excel.Workbooks wbooks = a.Workbooks;
foreach (Excel.Workbook wb in wbooks)
{
if (wb.Name == fileName)
{
XlsIsOpen = true;
isOk = true;
break;
}
}
//a.DisplayAlerts = false;
//a.Quit();
}
}
return XlsIsOpen;
}
相关文章推荐
- 修改已经打开的对话框的浏览路径-修改文件属性和查找指定窗口
- vb读取xls文件而不打开excel进程 ado数据库方法读取xls
- linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制
- 打开资源视图时-提示在另一个编辑器中打开,但是已经关闭所有的打开文件还是这样
- Android遍历获取Office格式(Word,Excel,PPT,PDF)的文件并打开
- [转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
- poi向已经打开的excel文件写数据导致文件被清空
- Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
- python打开文件并获取文件相关属性的方法
- C# 判断本机是否安装Excel及多版本安装?获取Excel进程信息和打开Excel应用软件
- 解决双击excel文件打开多个excel.exe进程的问题
- 获取每个进程可打开的最大文件数量
- [转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
- native excel 文件已经打开的判断
- Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
- [转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
- 【整理】Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
- 获取attr属性的值和getDimension方法获取到资源文件中定义的dimension值
- 获取工程下的路径和判断一个文件是否已经被打开
- Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据