c# - C# - 检测 Excel 文件是否在 Sharepoint 中打开
问题描述
你好(对不起前面的拼写,可能不太好,因为我来自瑞士)
我一直在遭受一个问题,到目前为止我还没有找到可能的解决方案,我的代码就像我希望它需要的那样工作。
代码背后的想法:我想检测 Sharepoint 中的 Excel 文件是否已被用户打开。换句话说,我希望一次只有一个用户可以打开或编辑 Excel 文件。这意味着当第二个用户尝试打开它时,如果它到达 try...catch 函数,代码应该跳转到异常。但如果到目前为止没有一个用户没有打开它,代码应该忽略异常。
我的问题:当第一个用户尝试在 Sharepoint 中打开 Excel 文件时,它以某种方式已经显示消息“Excel 已关闭!”,这意味着实际上有人已经打开它,不是吗?我不认为这是一个大问题,因为当我将 Excel 文件的路径从 Sharepoint 更改为驱动器 (C://) 时,它确实有效。不幸的是,我的厨师希望我通过 Sharepoint 完成这个过程。
try
{
// check excel file
Stream s = File.Open(xlPath, FileMode.Open, FileAccess.Read, FileShare.None);
s.Close();
// is opened
myXl.Workbooks.Open(xlPath, Password: "xxx");
myXl.Visible = false;
myWB = myXl.ActiveWorkbook;
myWS = (Excel.Worksheet)myWB.Worksheets.get_Item(1);
}
catch (Exception)
{
// is not opened
MessageBox.Show("Excel is closed!", "Warning",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
Close();
}
有解决问题的想法吗?这将是一个巨大的帮助。
谢谢!
解决方案
推荐阅读
- python - 为什么我的位置查找功能出现值错误?
- spring - 事务不使用弹簧回滚
- abstract-syntax-tree - Ada 使用 ASIS 修改源代码(Ada Semantics 接口规范)
- design-patterns - Is it normal to share one table's data with many other tables without directly using foreign key
- yii2 - 登录访问在yii2中不起作用
- java - 传递给 List java 的对象的内存引用
- scala - 从 org.apache.spark.sql.Dataset 转换为 CoordinateMatrix
- rust - 为什么作为参数传递的特征对象的生命周期需要更高等级的特征边界而结构不需要?
- visual-studio - 带有 C++/CX 变量的 Visual Studio 条件断点无法评估
- javascript - 不使用特定链接引用脚本