我想用C#和Microsoft Excel执行以下操作:从C#启动Excel并关闭“保存”
1 - 用户选择一个文件。
2 - Micorosft Excel显示为编辑该文件。
3 - 只要用户点击Excel的“保存”按钮,Microsoft Excel应该关闭。用户不必点击退出。
关于#3的任何想法?
问候, 塞巴斯蒂安
我想用C#和Microsoft Excel执行以下操作:从C#启动Excel并关闭“保存”
1 - 用户选择一个文件。
2 - Micorosft Excel显示为编辑该文件。
3 - 只要用户点击Excel的“保存”按钮,Microsoft Excel应该关闭。用户不必点击退出。
关于#3的任何想法?
问候, 塞巴斯蒂安
此外,您可以使用FileSystemWatcher类来赶上保存的时刻,并杀死它的Excel。当然,如果你知道用户必须保存文件的位置。
你可以处理Workbook
的BeforeSave
事件,然后运行检查Saved
物业每十秒钟,并关闭Excel中,如果它是true
一个计时器。
关闭Excel时应该小心,因为如果关闭他们正在处理的(不同的)文件,用户将非常生气。
My Interop有点生疏,但我认为有一个事件发生在Excel保存文件时触发。
但是,我认为这是一个非常危险的功能实现,因为根据我的经验,互操作性往往是有点不确定性:)。想象一下,如果当用户在应用程序之外使用Excel时保存处理程序处于活动状态,会发生什么情况 - 他点击保存,Excel消失!
您可以让Excel宏处理BeforeSave
事件,取消用户发起的保存,将文件保存在宏中,保存后您将存储在宏中,然后关闭Excel。
因此,也许是这样的:
Private Sub myBeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not HandlingBeforeSave Then
HandlingBeforeSave = True
Cancel = True
Me.Save
Application.Quit
End If
End Sub
This KB文章描述了从C#添加宏到Excel中。
您可以使用VSTO for Excel。使您能够针对Excel对象模型编写C#代码。应该能够做到你想要的。
虽然,SWeko有一个好点。您需要弄清楚如何确定它是否应该在保存时关闭。如果你不是每次保存都会关闭Excel。
我有一个类似的问题,但我等到用户关闭Excel中。在Excel automation: Close event missing处查看我的“解决方案”。
我发现它在用户点击“保存”时关闭excel不知多少。如果您坚持“保存”事件,您可能希望在用户保存后立即观看文件元数据更改(例如,上次修改日期)。
你问如何做基本的Excel互操作或只#3? – SLaks 2010-06-17 13:47:04
我不是100%确定这是一个很好的工作流程。如果我(作为用户)执行1&2并开始编辑文件,会发生什么情况。在完成我的编辑之前,我会召集会议,但我认为“我可能会走一段时间,更好地保存”。我和巴姆! Excel关闭 - 不是我想要的。 – ChrisF 2010-06-17 13:49:42