Вопрос по ms-office, c#, ms-word, automation – MS Word Viewer C #. NET автоматизации

3

Можно ли автоматизировать следующее: обращение к MS Word Viewer для программного открытия документа и его печати? C # в идеале

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

Вы пытались добавить ссылку на COM-объект в Visual Studio. Библиотека объектов MS Office 11/12, но нет библиотеки MS Word? Есть идеи?

У меня нетустановлен Office 200x

ура»

Если вы неЕсли Office не установлен, то почему вы ожидаете, что Office Automation будет установлен? John Saunders
M $» - Я так понимаю, .NET разработка - не твоя повседневная работа :-) Robert Venables
Я столкнулся с той же проблемой, я нашел решение для просмотра текстового документа здесь,codeproject.com/Questions/189082/... user1670189

Ваш Ответ

6   ответов
1

которое позволяет просматривать документы Word, фактически не установив Word? Если так, я неНе думаю, что есть способ автоматизировать зрителя, так как он неУстановите библиотеки автоматизации Word COM, что вам и нужно.

Иногда программы поддерживают другой способ, например DDE или параметр командной строки, чтобы сказать им, чтобы напечатать что-то. Вы можете увидеть это в реестре, например, в моемHKEY_CLASSES_ROOT\AcroExch.acrobatsecuritysettings.1\shell\Print\command У меня есть значение ""C: \ Program Files \ Adobe \ Reader 9.0 \ Reader \ AcroRd32.exe "" / п / ч "% 1" ... где параметр / p предположительно указывает его на печать. ChrisW
2

может быть так:

class Program
{
    static void Main(string[] args)
    {
        PrintDocument(@"C:\test.docx", 2);
        Console.ReadKey();
    }

    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);

    private static void PrintDocument(string name, int copies)
    {
        var process = System.Diagnostics.Process.Start(new ProcessStartInfo
        {
            FileName = name,
            UseShellExecute = true
        });

        process.WaitForInputIdle();
        SetForegroundWindow(process.MainWindowHandle);

        SendKeys.SendWait("^p"); // send CTRL+P
        SendKeys.SendWait(copies.ToString()); // send number of copies
        SendKeys.SendWait("~"); // send ENTER

        // -- or send all in one
        //SendKeys.SendWait(string.Format("^p{0}~", copies));
    }
}
2

который вы передаете ему.

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("WORDVIEW.exe", fileName.ToString());
System.Diagnostics.Process.Start(info);

Попробуйте также возиться с аргументами, чтобы передать командную строку print (я не знаю, сможете ли вы).

И да, после того, как я исчерпал все возможности, я не нашел способа взаимодействовать с Microsoft Viewer, что очень расстраивает.

1

Использование сборок Interop всегда плохая идея, еслизапускаются на сервереWord Automation Services

Это использует SharePoint, который есть не у всех. Вы также доставляете файл на веб-страницу черезWebRequestMethod и распечатайте страницу для симпатичного писателя PDF или другого водителя. Просто отправьте байты файла с типом MIME. Вы должны распечатать на странице загрузки веб-страницы asp.net.

5

новить Word (запускает процесс WINWORD за сценой), а взаимодействие позволяет вам взаимодействовать с ним в вашем коде.

Насколько я знаю, это единственный способ сделать это.

3

Aspose.Words, Это's предназначен для автоматизации Office без каких-либо зависимостей от установленного Word. Он предоставляет удобный API для открытия документа, а затем выполняет ряд действий, таких как печать, экспорт в pdf и многие другие результаты.

Похожие вопросы