在C#.NET应用程序仍在运行时打开Word文档

时间:2013-02-06 15:51:42

标签: c# .net

我在参考StackOverflow和一些博客上的各种问题之后编写了以下代码,以创建用于通过C#插入图像的word文档。在我的独立PC中,我能够运行它并打开最终创建的文档,即使应用程序仍在运行(这是我需要的)但是当我在Windows服务器机器上运行相同的应用程序时,生成word文档作为输出,我无法打开它。抛出的错误被其他一些进程使用,并说我必须保存对模板所做的更改(我猜是一些.dot文件)。

我观察到开发环境中的一些变化。我在针对3.5框架的Visual Studio 2010中运行,而服务器2003 PC则包含Visual Studio 2008。

命名空间Microsoft.Office.Interop.Word;在我的PC的COM选项卡中,它存在于目标机器的.NET选项卡中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using Word = Microsoft.Office.Interop.Word;
using System.Windows.Forms;
using System.IO;
namespace Snapper
{
    class WordDocumentGenerator
    {
        public void CreateWordDocument(string fileName)
        {
            string originalPath = Directory.GetCurrentDirectory();
            string path = originalPath;
            path += @"\snapshots";


            Word.Application wordApp = new Word.Application();
            wordApp.Documents.Add();
            wordApp.Visible = false;
            Word.Document doc = wordApp.ActiveDocument;            
            object oMissing = System.Reflection.Missing.Value;


            string[] images = Directory.GetFiles(path);
            foreach (var image in images)
            {
                doc.InlineShapes.AddPicture(image);
                //Goto End of document
                wordApp.Selection.EndKey(Unit: Word.WdUnits.wdStory);
            }

            //doc.InlineShapes.AddPicture(path + @"\snap2.jpg");

            path = originalPath;
            path += @"\documents";

            DirectoryInfo docDir = new DirectoryInfo(path);
            if (!docDir.Exists)
            {
                docDir.Create();
            }   

            string savePath = path + @"\" + fileName + ".doc";

            doc.SaveAs(savePath,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing,
                ref oMissing
               );
            doc.Save();
            wordApp.Quit(ref oMissing, ref oMissing, ref oMissing);
        }

    }
}

任何人都可以指导对代码进行必要的更改,以便我的应用程序允许我在创建的word文档仍在运行时打开它。

提前致谢。

0 个答案:

没有答案