2010-02-19 46 views
0

因此,我將這個詞模板作爲資源應用於我的應用程序。 我想打開它來創建新文檔,但不知道如何做到這一點。從資源中使用互操作詞打開Word模板

下面的代碼沒有明顯的工作,因爲add方法需要一個文件路徑(而不是資源的byte []對象...

object tFalse = false; 
object missing = System.Reflection.Missing.Value; 
Word.Application app = null; 
Word.Document document = null; 

object template = Resources.MyTemplate; 
document = app.Documents.Add(ref template, ref tFalse, ref missing, ref missing); 

但我怎麼在訪問該資源文件正確的方法?

回答

0

這裏是我如何做到這一點大部分。我離開了工作之間,離開只是打開和關閉。

private void ProcessWord() 
{ 
    object missing = System.Reflection.Missing.Value; 
    object readOnly = false; 
    object isVisible = false; 
    object fileName = "C:\\temp.dot"; 
    object fileNameSaveAs = "C:\\temp.doc"; 
    object fileFormat = WdSaveFormat.wdFormatRTF; 
    object saveChanges = WdSaveOptions.wdDoNotSaveChanges; 

    Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application(); 

    Documents oDocTmp = oWord.Documents; 
    oWord.Visible = false; 

    //Open the dot file as readonly 
    Document oDoc = oDocTmp.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing); 

    //...do some work 

    //Save the doc 
    oDoc.SaveAs(ref fileNameSaveAs, ref fileFormat, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); 
    // close the open document 
    oDoc.Close(ref saveChanges, ref missing, ref missing); 
    // quit word 
    oWord.Quit(ref saveChanges, ref missing, ref missing); 
} 

你也應該看看到的東西清理類似的記憶:

GC.Collect(); 
GC.WaitForPendingFinalizers(); 
Marshal.FinalReleaseComObject(oWord); 
Marshal.FinalReleaseComObject(oDocTmp); 

可能不是最好的做法,但它已經比它的前手取得更大的成功。