0
因此,我創建了一個C#庫,用於處理和編輯Word文檔。這當然引用了OpenXML SDK。但是,在我使用該庫的情況下,我不希望引用.dll。我可能會從其他項目中使用將流引入WordDoc而不引用SDK
一種方法有WordprocessingDocument
參數,並有此配置文件:
public bool FillTemplate(ref WordprocessingDocument document, XElement data)
{
//EDIT the document and return True if succesful.
}
問題就在這裏,當然,我必須創建一個WordprocessingDocument
其他項目中,而不是隻是路過流。
好吧,我想最簡單的解決方案將是對方法的不同的配置文件:
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
類實際上是如何工作的,並將其作爲參數傳遞給它?爲什麼流不改變最初打開的文檔?
我不知道這個包裝namepsace這樣。我想我應該閱讀它以更好地理解它。謝謝。 –
不客氣。 –
是的,'system.io.packaging'就是它。 –