При использовании Python docx как включить правописание в выходном документе?

Я использую библиотеку Python docx для создания документа, который я хотел бы открыть и найти орфографические ошибки. Но когда я открываю документ, ни один из флагов орфографических ошибок (маленькие красные подчеркивания) или не идентифицируются, если я запускаю проверку орфографии. Если я редактирую строку или копирую, вырезаю и вставляю содержимое обратно в word, функциональность орфографии работает так, как ожидалось.

есть ли способ заставить выходной документ отображать / распознавать орфографические ошибки на выходе документ автоматически? Я играл с флагом "no_proof", но это, похоже, не помогает. (Используя 64-битный Python 3.4, docx 8.6 в окне Windows, открывая вывод в Word 2013)

Спасибо за любые идеи!

код для воспроизведения:

from docx import Document
document = Document()
paragraph = document.add_paragraph('This has a spellling errror')
document.save(r'SpellingTester.docx')

вывод в Word :

1 ответов


Я бы попробовал использовать document.settings объект, который он обертывает элемент узла lxml документа. Как вы можете видеть из документации есть .

настройки Python DOCX

<xsd:element name="hideSpellingErrors" type="CT_OnOff" minOccurs="0"/>

изменить: После исследования немного дальше я бы попробовал что-то вроде этого:

import docx

document = docx.Document()

DOCX = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'

element = document.settings.element.find(DOCX + 'proofState')
element.attrib[DOCX + 'grammar'] = 'dirty'
element.attrib[DOCX + 'spelling'] = 'dirty'

document.add_paragraph("This has a spellling errror")
document.save("test.docx")

С DOCX префикс, который может измениться, но он легко читается в элементе lxml. Я не знаю прямо сейчас, есть ли способ сделать что-то большее. прямо и чисто, но это работает для меня.

подробнее о proofState настройки в docx: