【发布时间】:2012-08-03 21:10:53
【问题描述】:
我正在实现一个 Excel 接口。我正在使用 COM 直接从 C++ 自动化 Excel。我的大部分应用程序都可以可靠地运行。
但是,我无法检测到文件是否已在 Excel 中打开。如果它是打开的,那么我想通知用户在运行模拟之前关闭它。
我没有使用 MFC、VB 或 .NET。我的解决方案必须适用于 Excel 版本 97 到 2010。如果我可以通过编程方式知道 Excel 的版本,则可以对不同的 Excel 版本使用不同的技术。
我在同一文件夹中查找名为“~$xxx”(其中“xxx”是原始文件名)的文件,以确定 Excel 是否创建了会话锁定。但这种技术并不总是有效。
类似的问题是,一旦在我的程序中启动模拟,我想阻止用户以写入模式打开文件(只读模式是可以的)。
【问题讨论】:
-
您的意思是您希望用户仅在某个特定文件的情况下关闭 excel 中的文件?或任何文件? Excel 是否以独占模式打开文件?可以打开写吗?
-
我的程序将读取/写入 Excel 文件。我希望 Excel 不会干扰模拟。如果文件已在 Excel 中打开,则用户可以键入/编辑 Excel 文件,然后尝试保存。
-
您不能尝试打开文件进行写访问吗?如果其他人已经打开它,那应该会失败:同样,如果你成功了,它应该阻止其他人打开它进行写作。
-
@Tim:因为是Excel文件,所以我不自己写(请COM帮我写)。但是,我可以尝试打开文件进行写入,以确定我是否可以继续。感谢您的建议。
标签: c++ excel com automation