Откройте шаблон Word из ресурса с помощью слова взаимодействия - PullRequest
0 голосов
/ 19 февраля 2010

Итак, у меня есть этот шаблон слов в качестве ресурса в моем приложении.Я хочу открыть его для создания новых документов, но понятия не имею, как это сделать.

Очевидно, что следующий код не работает, поскольку для метода 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);

Но как мне правильно получить доступ к этому файлу ресурса?

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Вы можете сохранить свой шаблон в виде файла dot и напрямую использовать путь к файлу шаблона следующим образом:

0 голосов
/ 27 июля 2010

Вот как я это делаю по большей части. Я пропустил промежуточную работу и оставил только открывать и закрывать.

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);

Возможно, это не лучшая практика, но она была более успешной, чем была до этого.

...