Word文書を操作して編集するC#ライブラリを作成しました。これはもちろん、OpenXML SDKを参照しています。しかし私がライブラリを使用する場所では、.dllも参照する必要はありません。私は他のプロジェクトの内部WordprocessingDocument
を作成しなければならないのは勿論であるだけではなく渡すここSDKを参照せずにWordDocにストリームを変換する
public bool FillTemplate(ref WordprocessingDocument document, XElement data)
{
//EDIT the document and return True if succesful.
}
問題:私は別のプロジェクトから使用することがあります
一つの方法は、WordprocessingDocument
パラメータを持っており、このプロファイルを持っていますストリーム。
[OK]を、私は最も簡単な解決策は、法上の異なるプロファイルだろうと思います。
public bool FillTemplate(Stream document, XElement data)
{
WordprocessingDocument doc = WordprocessingDocument.Open(document, true);
return FillTemplate(doc, data);
}
しかし、私は、私はちょうどストリームのための拡張メソッドを作成するために素晴らしいアイデアだろうと思ったものを得た:
public static WordprocessingDocument ConvertToWordDocument(this Stream stream, bool isEditable)
{
return WordprocessingDocument.Open(stream, isEditable);
}
とこのようにそれを使用します。しかし、これはいくつかの理由で動作しません
FileStream fStream = new FileStream(@"C:\Users\Me\Desktop\SomeDoc.docx", FileMode.Open);
var doc = fStream.ConvertToWordDocument(true);
filler.FillTemplate(ref doc, getXmlDataFor(42));
fStream.Flush();
fStream.Close();
(Docは変更されますが、ストリームに返されるようには見えません)、私はStreamsとWordprocessingDocument
パッケージ/ラッパーを使用しているという考え方について、少し懐疑的です。
何が最適な解決策になるので、私はずいぶん問題にはならないでしょうか?どのように実際にWordprocessingDocument
クラスは、パラメータなどの周りを渡すことに関して動作しますか?ストリームが元々開いていた文書を変更しなかったのはなぜですか?
このようなパッケージネームスペースについては、わかりませんでした。私はそれを少し良く理解するためにそれについて読むべきだと思います。ありがとうございました。 –
ようこそ。 –
うん、 'system.io.packaging'はそれです。 –