C#调用office interop接口打开word、excel、ppt,拦截处理关闭、保存事件 您所在的位置:网站首页 ppt播放状态下打开word C#调用office interop接口打开word、excel、ppt,拦截处理关闭、保存事件

C#调用office interop接口打开word、excel、ppt,拦截处理关闭、保存事件

2024-07-06 05:58| 来源: 网络整理| 查看: 265

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WordLib = Microsoft.Office.Interop.Word; using ExcelLib = Microsoft.Office.Interop.Excel; using PptLib = Microsoft.Office.Interop.PowerPoint; using Microsoft.Office.Interop.PowerPoint; using Microsoft.Office.Core; using Microsoft.Office.Interop.Excel;

namespace openOfficeFile {     public partial class Form1 : Form     {         private WordLib.Application myWordApp = null;         private ExcelLib.Application myExcelApp = null;         private PptLib.Application myPptApp = null;

        public Form1()         {             InitializeComponent();         }

        private void openWord_Click(object sender, EventArgs e)         {             object missing = System.Type.Missing;             object readOnly = false;             object confirm = false;

            if (myWordApp == null)                 myWordApp = new WordLib.Application();

            //设置word应用的用户名             //myWordApp.UserName = parentMainWind.currentMeet.MeetingUser;             String fileNameAllPath = "D:/test.docx";             try             {                 //打开word文档                 //以读写模式打开                 WordLib.Document wordDoc =                 myWordApp.Documents.Open(fileNameAllPath, ref confirm, ref readOnly, ref missing, ref missing, ref missing,                     ref missing, ref missing, ref missing, ref missing, ref missing,                     ref missing, ref missing, ref missing, ref missing, ref missing);                 //设置修订模式                 //wordDoc.TrackRevisions = true;                 //显示修订模式                 //wordDoc.ShowRevisions = true;

                //WordLib.WdWindowState wsw = myWordApp.ActiveWindow.WindowState;                 //将WORD应用窗口最大化,即设置为最当前                 myWordApp.ActiveWindow.WindowState = WordLib.WdWindowState.wdWindowStateMaximize;

                //关联:文件关闭事件                 myWordApp.DocumentBeforeClose += new WordLib.ApplicationEvents4_DocumentBeforeCloseEventHandler(wordApp_DocumentBeforeClose);                 //关联:文件保存事件                 myWordApp.DocumentBeforeSave += new WordLib.ApplicationEvents4_DocumentBeforeSaveEventHandler(wordApp_DocumentBeforeSave);                 //打开word.exe并显示                 myWordApp.Visible = true;                 myWordApp.Activate();             }             catch (Exception ex)             { MessageBox.Show(ex.Message); }         }

        void wordApp_DocumentBeforeClose(WordLib.Document Doc, ref bool Cancel)         {             try             {

                //关闭文档                 Doc.Close();

                //检查,是否需退出word应用                 int aa = myWordApp.Documents.Count;                 if (myWordApp.Documents.Count == 0)                 {                     myWordApp.Application.Quit();                     myWordApp = null;                 }             }             catch (Exception ex)             {                 //string str1 = string.Format("关闭文档{0}错误,错误信息{1}",Doc.Name, ex.Message);                 //MessageBox.Show(str);             }         }

        void wordApp_DocumentBeforeSave(WordLib.Document Doc, ref bool SaveAsUI, ref bool Cancel)         {             //文件没有修改过,直接返回             if (Doc.Saved) return;

            Doc.Save();

        }

        private void openExcel_Click(object sender, EventArgs e)         {

            try             {                 string filename = "D:/test.xlsx";                 object missing = System.Reflection.Missing.Value;  //TODO                                  myExcelApp = new ExcelLib.Application();//引用Excel对象                 myExcelApp.Workbooks.Open(filename, missing, false,                     missing, missing, missing, missing, missing, missing,                     missing, missing, missing, missing, missing, missing);                 //myExcelApp.Workbooks.Add(filename); //不要加上这句

                myExcelApp.WorkbookBeforeClose += new ExcelLib.AppEvents_WorkbookBeforeCloseEventHandler(excelApp_DocumentBeforeClose);                 myExcelApp.WorkbookBeforeSave += new ExcelLib.AppEvents_WorkbookBeforeSaveEventHandler(excelApp_DocumentBeforeSave);                 

                myExcelApp.Visible = true;//设置Excel为可见                                }             catch (Exception ex)             {                 //ex.StackTrace             }

        }

        private void excelApp_DocumentBeforeClose(Workbook Wb, ref bool Cancel)         {             int xxx = 0;             xxx++;         }

        private void excelApp_DocumentBeforeSave(Workbook Wb, bool SaveAsUI, ref bool Cancel)         {             Wb.Save();             int xxx = 0;             xxx++;

        }

        private void openPpt_Click(object sender, EventArgs e)         {             String filePath = "D:/test.pptx";             myPptApp = new PptLib.Application();             //以非只读方式打开,方便操作结束后保存.             Presentation PPTPresentation = myPptApp.Presentations.Open(filePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoTrue);             SlideShowSettings slideShow = PPTPresentation.SlideShowSettings;//.SlideShowSettings;

            myPptApp.PresentationClose += new PptLib.EApplication_PresentationCloseEventHandler(pptApp_DocumentBeforeClose);             myPptApp.PresentationBeforeSave += new PptLib.EApplication_PresentationBeforeSaveEventHandler(pptApp_DocumentBeforeSave);

            slideShow.Run();             //PPTPresentation.SlideShowWindow.View.GotoSlide(1);         }

        void pptApp_DocumentBeforeClose(Presentation Pres)         {             int xxx = 0;             xxx++;         }

        void pptApp_DocumentBeforeSave(Presentation Pres, ref bool Cancel)         {                         Pres.Save();             int xxx = 0;             xxx++;         }

    } }  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有