保存使用SaveFileDialog动态创建的word文档?

时间:2012-06-07 21:20:01

标签: c# winforms ms-word

我有将文本写入Word文档(非XML)并将其保存到文件的代码。现在,我正在尝试修改它,以便创建文档,然后提示用户保存文档。

这是用于创建Word文档的代码:

object miss = System.Reflection.Missing.Value;
object Visible = true;
object start1 = 0;
object end1 = 0;
Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();
Document aDocument = WordApp.Documents.Add(ref miss, ref miss, ref miss, ref miss);
Range rng = aDocument.Range(ref start1, ref miss);

try
{
    rng.Font.Name = "Georgia";
    rng.InsertAfter("Report Header!");
    object filename = @"C:\Users\test.doc";

    aDocument.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
    object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges;
    object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdWordDocument;
    object routeDocument = true;
    ((_Document)aDocument).Close(saveChanges, originalFormat, routeDocument); //to close the document process (winword.exe)
    //WordApp.Visible = true;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}        

这按预期工作;它会创建一个Word文档并为用户打开它。我一直在阅读微软关于使用SaveFileDialog保存文件的this link,但我不完全确定如何将它应用于我的情况。由于SaveFileDialog提供了要写入的流对象,我应该从Word文件中读取并将其写入流吗?如果是这种情况,我不知道如何编码,但这似乎是一种迂回的方式。有没有办法将创建的Word文档直接传递给SaveFileDialog?

1 个答案:

答案 0 :(得分:5)

SaveFileDialog可以简单地用于为您的用户提供一个选择文件夹和名称的界面。然后由你来保存文件。

SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Word document|*.doc";
saveFileDialog1.Title = "Save the Word Document";
if(DialogResult.OK == saveFileDialog1.ShowDialog())
{
    string docName = saveFileDialog1.FileName;
    if(docName.Length > 0)
    {
        object oDocName = (object)docName;
        aDocument.SaveAs(ref oDocName, ref miss, ref miss, ref miss, ref miss, ref miss,  
                     ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, 
                     ref miss, ref miss, ref miss, ref miss); 
        WordApp.Visible = true; 
    }
}

您在问题中提到的方法由MSDN in this article记录,但在您的情况下让MSWORD应用程序对其文件执行保存操作更为实际。