我可以使用 Silverlight 中的 Microsoft.Office.Interop.Word .dll 来操作 MSWord 的 SaveDialogFile 吗?

Posted

技术标签:

【中文标题】我可以使用 Silverlight 中的 Microsoft.Office.Interop.Word .dll 来操作 MSWord 的 SaveDialogFile 吗?【英文标题】:Can I use the Microsoft.Office.Interop.Word .dll in Silverlight to manipulate the SaveDialogFile of MSWord? 【发布时间】:2011-11-18 08:39:27 【问题描述】:

我在制作silverlight 应用程序时遇到问题,我需要使用silverlight 创建一个Word 文档,然后使用MSWord 中的默认保存按钮将其直接保存到数据库,但后来我无法使用 Silverlight 中的 "Microsoft.Office.Interop.Word .dll" 来操作 SaveFileDialog 以便在保存时设置默认路径..

另一个问题是,我可以使用 Microsoft.Office.Interop.Word .dll 在 Silverlight 中隐藏或设置 MSWord SaveFileDialog = false 吗? 因为我的另一个计划是在Silverlight 并没有使用 MSWord 的 SaveFileDialog 框..?

我使用的是 Silverlight 5 Beta,使用其他版本的 MS Office 是否存在兼容性问题?

 public partial class MainPage : UserControl
 
     dynamic objWord;
     dynamic document;
     dynamic range;
     static bool saveDoc = false;

     public MainPage()
     
         InitializeComponent();
         objWord = AutomationFactory.CreateObject("Word.Application"); 
         AutomationEvent saveEvent = AutomationFactory.GetEvent(objWord, "DocumentBeforeSave");
         saveEvent.EventRaised += (s, args) =>
         
             saveDoc = true;

             if (saveDoc == true)
             
                 SaveFileDialog dlg = new SaveFileDialog();
                 dlg.DefaultExt = ".doc"; // Default file extension
                 dlg.Filter = "Word documents (.doc)|*.doc"; // Filter files by extension
                 Nullable<bool> result = dlg.ShowDialog();

                 if (result == true)
                 
                     string filename = dlg.SafeFileName;
                     FileInfo aD = new FileInfo(filename);
                     string pathDoc = aD.DirectoryName.ToString();
                     MessageBox.Show(pathDoc); //trying to get the path so that i can flush it to memory stream
                 
             
         ;
     

     private void Button_Click(object sender, RoutedEventArgs e)
     
         if (AutomationFactory.IsAvailable)
         
             try
             
                 document = objWord.Documents.Add();
                 object startIndex = 0;
                 range = document.Range(ref startIndex);
                 objWord.Visible = true;
             
             catch (Exception ex)
             
                 MessageBox.Show(ex.Message);
             
         
     

在此先感谢 :) 上帝保佑

【问题讨论】:

【参考方案1】:

如果您的 Silverlight 应用程序,您可以访问 Word/Excel/Outlook。在 FullTrust 和 OutOfBrowser 中。

Here you have a good example with Excel

【讨论】:

以上是关于我可以使用 Silverlight 中的 Microsoft.Office.Interop.Word .dll 来操作 MSWord 的 SaveDialogFile 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Silverlight 中的条件样式?

Silverlight 中的多任务和多线程

我是不是必须使用 WCF 对 silverlight 应用程序中的对象进行序列化/反序列化?

XAML silverlight 中的填充图案

Silverlight 3 中的新客户端网络堆栈可以直接连接到 Azure 存储或网格吗?

Silverlight 中的 Spritesheet