我在参考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文档仍在运行时打开它。
提前致谢。