0

在参考了 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 文档。

提前致谢。

4

0 回答 0