Word加载项功能区

时间:2013-01-12 12:26:11

标签: c# ms-office add-in office-addins

我创建了一个Office加载项项目,并为应用程序添加了功能区菜单。当我构建我的项目word文档时,我的功能区没有问题。

如果使用下面的按钮点击事件点击功能区菜单中的按钮,如何使用StreamReader将活动文档保存为文件?

 private void btnsavefile_Click(object sender, RibbonControlEventArgs e)
{
    //Getting FileStream here.

}

3 个答案:

答案 0 :(得分:0)

我在Stack Overflow中找到了以下解决方案。希望它与你有关。

Serialize current ActiveDocument from office 2007 add-in

就个人而言,我在处理这种情况时也做了同样的事情。我已将该文件的副本保存到临时位置,并将副本推送到服务器。在这种情况下,活动文档保持不变。

Excel.Workbook xlb = Globals.ThisAddIn.Application.ActiveWorkbook;
xlb.SaveCopyAs(filePath);

希望这有帮助!

答案 1 :(得分:0)

创建Word Addin项目 - >添加功能区视觉设计器,添加新项目。

向功能区设计器添加菜单,并在ribbonsample.cs

中写下以下代码
public partial class RibbonSample
{
  private void RibbonSample_Load(object sender, RibbonUIEventArgs e)
  {
    // Initialise log4net 
  }
  //Adding items in menu from DB
  public RibbonSample()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
        try
        {
            System.Data.DataTable dt = new DataAcces().GetData();
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    RibbonButton Field = this.Factory.CreateRibbonButton();
                    Field.Label = dt.Rows[i][1].ToString();
                    Field.Tag = i;
                    Field.ControlSize =
                        Microsoft.Office.Core.RibbonControlSize.RibbonControlSizeLarge;
                    Field.Click += Field_Click;
                    menu1.Items.Add(Field);
                }
            }
            else
            {
                System.Windows.Forms.MessageBox.Show("No Fields are available in database");
            }
        }
        catch (Exception exception)
        {
            //thrw exception
        }
    }

//Select menu item text in word 
void Field_Click(object sender, RibbonControlEventArgs e)
{
    try
    {
        Microsoft.Office.Interop.Word.Range currentRange = Globals.ThisAddIn.Application.Selection.Range;
        currentRange.Text = (sender as RibbonButton).Label;
    }
    catch (Exception exception)
    {
        log.Error(friendlyErrorMessage + " Field_Click Details:" + exception.Message, exception);
    }
  }
}

答案 2 :(得分:0)

void Application_DocumentBeforeClose(Word.Document document,ref bool Cancel)     {         尝试         {

        string filePath = this.Application.ActiveDocument.FullName.ToString();
        string fileName = this.Application.ActiveDocument.Name;

        //dialogFilePath = filePath;
        dialogFileName = fileName;


        string tempFile;
        string tempPath;


        if (true) 
        {

            var confirmResult = System.Windows.Forms.MessageBox.Show("Are you sure to save this document ??",
                    "Confirm Save!!",
                    System.Windows.Forms.MessageBoxButtons.YesNo);
            if (confirmResult == System.Windows.Forms.DialogResult.Yes)
            {
                //document.Save();
                var iPersistFile = (IPersistFile)document;
                iPersistFile.Save(tempPath, false);

               //Do some action here 
            }

            Word._Document wDocument = Application.Documents[fileName] as Word._Document;
            //wDocument.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
            ThisAddIn.doc.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
        }

    }
    catch (Exception exception)
    {

    }

}