在参考了 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 文档。
提前致谢。