Как запустить файл template.dot в режиме редактирования в MS Word - PullRequest
0 голосов
/ 25 мая 2018

У меня есть документ Word.dot template.dot, и если я использую Проводник Windows, когда я щелкаю по нему правой кнопкой мыши, я вижу функции " Новый , Открыть, Печать и т. Д.", Где Новый являетсяопция по умолчанию.

Если я использую Process.Start ("template.dot"), эта функция создает новый документ ("document.doc"), потому что по умолчанию выбрано "New".Как открыть файл «template.dot» для редактирования в MS Word (например, когда я выбираю функцию «Открыть» из правого клика)?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018
Process.Start(new ProcessStartInfo(@"C:\1.dot") { Verb = "open" });

Кроме того, полная соответствующая команда может быть найдена в нескольких местах реестра:

Computer\HKEY_CLASSES_ROOT\Applications\WINWORD.EXE\shell\edit\command

Computer\HKEY_CLASSES_ROOT\Word.Template.8\shell\Open\command

Следующее работает для меня, но в некоторых случаях может потребоваться полный путь:

Process.Start("winword.exe", @"/n C:\1.dot");
0 голосов
/ 25 мая 2018

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

using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Word;

namespace EditWordDotSO
{
    class Program
    {
        static void Main(string[] args)
        {
            var applicationWord = new Microsoft.Office.Interop.Word.Application();
            applicationWord.Visible = true;

            Document doc = null;

            try
            {
                doc = applicationWord.Documents.Add(@"path\to\your\a.dotx");
                doc.Activate();
            }
            catch (COMException ex)
            {
                Console.Write(ex);
                //dispose properly as shown below
            }
        }
    }
}

Примечание. Вам необходимо добавить ссылку на COM к Microsoft.Office.Interop.Word, привязанному к установленному MS Word.

Обновление: как уже упоминалось @CindyMeister, используйте

this.Application.Documents.Add(@"C:\Test\SampleTemplate.dotx");

вместо создания new Document().Ссылка: Как: программно создавать новые документы

PS: Блок finally { ... } предназначен для закрытия документа и правильного расположения объектов COM. Зачем использовать наконец ?

Вот более сложный метод, вдохновленный этой публикацией:

finally {
    doc.Close(null, null, null);
    applicationWord.Quit();
    if (doc != null)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
    if (applicationWord != null)
        System.Runtime.InteropServices.Marshal.ReleaseComObject(applicationWord);
    doc = null;
    applicationWord = null;
    GC.Collect(); // final cleanup    
}

PPS: Это также возможнодобавить или изменить шаблон так:

doc = applicationWord.Documents.Add();
doc.set_AttachedTemplate(@"C:\Test\SampleTemplate.dotx");
doc.UpdateStyles();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...