从C#启动Excel并closures它的“保存”
我想用C#和Microsoft Excel来完成以下工作:
1 – 用户select一个文件。
2 – Micorosft Excel显示编辑该文件。
3 – 只要用户点击Excel的“保存”button,Microsoft Excel应该closures。用户不必点击退出。
任何想法#3?
问候,塞巴斯蒂安
也可以使用FileSystemWatcher类来赶上保存的时刻,并杀死它的Excel。 当然,如果你知道用户必须保存文件。
您可以让Excelmacros处理BeforeSave
事件,取消用户启动的保存,将文件保存在macros中,保存后您将会在macros中,然后closuresExcel。
所以可能是这样的:
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
这篇文章介绍了如何从C#中添加一个macros到Excel。
我的Interop有点生疏,但是我认为Excel保存文件时会触发一个事件。
但是,我认为这是一个非常危险的function,因为根据我的经验,互操作性往往有些不确定性。 想象一下,如果保存处理程序在用户在应用程序之外使用Excel时处于活动状态,将发生什么情况 – 他点击保存,Excel消失!
您可以使用VSTO for Excel。 使您能够针对Excel对象模型编写C#代码。 应该能够做到你想要的。
尽pipe如此,SWeko有一个好点。 你将需要弄清楚如何确定是否应该closures保存。 如果你不是每个保存都会closuresExcel。
您可以处理Workbook
的BeforeSave
事件,然后运行一个计时器,每隔十秒钟检查一次Saved
属性,如果为true
则closuresExcel。
closuresExcel时应该小心,因为如果closures他们正在处理的(不同的)文件,用户将非常生气。
我不知道这是否有帮助,但我认为这是接近您的需要http://www.c-sharpcorner.com/UploadFile/jodonnell/Excel2003fromCSharp12022005021735AM/Excel2003fromCSharp.aspx
我有一个类似的问题,但是我等到用户closuresExcel。 在Excel自动化中查看我的“解决scheme” :closures事件丢失 。
当用户点击“保存”时,我觉得closuresexcel是不直观的。 如果您坚持“保存”事件,您可能希望在用户保存后立即观察文件元数据更改(例如,上次修改date)。