C# で画像を挿入するための Word 文書を作成するために、StackOverflow といくつかのブログに関するさまざまな質問を参照した後、次のコードを作成しました。私のスタンドアロン PC では、これを実行して、アプリケーションがまだ実行されているときでも最終的に作成されたドキュメントを開くことができます (これが必要です)。ただし、Windows サーバー マシンで同じアプリケーションを実行すると、単語ドキュメントが出力として生成されます、開けません。スローされたエラーは Used by some other process であり、テンプレートに加えられた変更を保存する必要があることを示しています (いくつかの .dot ファイルだと思います)。
開発環境にいくつかの変化が見られました。サーバー2003 PCにVisual Studio 2008が含まれている間、3.5フレームワークを対象としたVisual Studio 2010で実行しています。
名前空間 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文書を開くことができるように、誰でもコードに必要な変更を加えることができますか?
前もって感謝します。