#python #win32com
#python #win32com
Вопрос:
Я не могу заставить Python печатать документ word. То, что я пытаюсь сделать, это открыть документ Word, распечатать его и закрыть. Я могу открыть Word и документ Word:
import win32com.client
msword = win32com.client.Dispatch("Word.Application")
msword.Documents.Open("X:BackofficeAdamchecklist.docx")
msword.visible= True
Я попытался рядом с print
msword.activedocument.printout("X:BackofficeAdamchecklist.docx")
Я получаю сообщение об ошибке «распечатка недопустима».
Может ли кто-нибудь пролить некоторый свет на то, как я могу распечатать этот файл из Python. Я думаю, это может быть так же просто, как изменить слово «распечатка». Спасибо, я новичок в Python.
Ответ №1:
msword.ActiveDocument
выдает текущий активный документ. PrintOut
Метод печатает этот документ: он не принимает имя файла документа в качестве параметра.
Из http://msdn.microsoft.com/en-us/library/aa220363 (v=office.11).aspx:
expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item,
Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX,
ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth,
PrintZoomPaperHeight)
В частности, Word пытается использовать ваше имя файла в качестве логического Background
значения, которое может быть настроено True
на печать в фоновом режиме.
Редактировать: случай имеет значение, и ошибка немного странная. msword.ActiveDocument.Printout()
должен распечатать его. msword.ActiveDocument.printout()
выдает ошибку с жалобой на то, что ‘PrintOut’ не является свойством.
Я думаю, что внутренне происходит то, что Python пытается компенсировать, когда вы не соответствуете регистру свойств, но он не совсем подходит для методов. Или что-то в этом роде в любом случае. ActiveDocument
и activedocument
взаимозаменяемы, но PrintOut
и printout
не являются.
Комментарии:
1. Хорошо, я знаю, что это глупый вопрос, но мне просто нужно ввести диапазон, чтобы напечатать все, что нравится
2. ms.word.activedocument.printout (диапазон = wdprintalldocument) или нужно вводить каждый символ сверху?
3. Я получаю исключение.’, (0, ‘Microsoft Word’, «‘Распечатка’ не является свойством».
4. Я отредактировал свой ответ: вам нужно использовать распечатку с верблюжьим регистром.
Ответ №2:
Вероятно, вам придется экранировать символ обратной косой черты
с помощью \
:
msword.Documents.Open("X:\Backoffice\Adam\checklist.docx")
РЕДАКТИРОВАТЬ: Объяснение
Обратная косая черта обычно используется для объявления специальных символов. Например n
, это специальный символ для новой строки. Если вам нужен литерал
, вам нужно его экранировать.
Комментарии:
1. Кроме того, вы также можете использовать необработанные строки, где такие специальные символы невозможны:
"X:\Backoffice\Adam"
тогда было бы равноr"X:BackofficeAdam"
. Это весьма полезно для разрешения копирования-вставки.2. Спасибо, я могу открыть его, он печатает, что я не могу выполнить
3. Word открывается, и файл открывается, но функция печати не выполняется?