I ran a code generated in python 3.6.5, it perfectly worked (countless times), now I turned on my computer, runned it again (didn’t change anything at all) and:
ImportError: cannot import name 'Document'
I tried to uninstall docx or python-docx via pip command according to previous posts, and:
Cannot uninstall requirement docx, not installed
then I tried to install, and:
Could not fetch URL https://pypi.python.org/simple/docx/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:719) - skipping
Could not find a version that satisfies the requirement docx (from versions: )
No matching distribution found for docx
What is going on here?
from tkinter import *
from functools import partial
from docx import Document
from docx.shared import Inches
the third line gives the problem (apparently) and I’m working on a mac OS High Sierra 10.13.6
Full Error Code:
Traceback (most recent call last):
File "/Users/cezi/Desktop/Products_Field+Entries.py", line 5, in <module>
from docx import Document
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/__init__.py", line 3, in <module>
from docx.api import Document # noqa
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/api.py", line 14, in <module>
from docx.package import Package
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/package.py", line 9, in <module>
from docx.opc.package import OpcPackage
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/opc/package.py", line 9, in <module>
from docx.opc.part import PartFactory
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/opc/part.py", line 13, in <module>
from ..oxml import parse_xml
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/oxml/__init__.py", line 89, in <module>
from .section import ( # noqa
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/docx/oxml/section.py", line 7, in <module>
from copy import deepcopy
File "/Users/cezi/Desktop/copy.py", line 1, in <module>
from docx import Document
ImportError: cannot import name 'Document'
I am getting the following error while installing python-docx
pip install python-docx
Using cached https://files.pythonhosted.org/packages/e4/83/c66a1934ed5ed8ab1dbb9931f1779079f8bca0f6bbc5793c06c4b5e7d671/python-docx-0.8.10.tar.gz
Requirement already satisfied: lxml>=2.3.2 in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (from python-docx)
Installing collected packages: python-docx
Running setup.py install for python-docx ... error
Complete output from command /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/var/folders/0c/v_yb4q7n2h3fg94rlfrr165r0000gn/T/pip-build-fDOKCT/python-docx/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('rn', 'n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/0c/v_yb4q7n2h3fg94rlfrr165r0000gn/T/pip-_QsXvN-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/docx
copying docx/package.py -> build/lib/docx
copying docx/compat.py -> build/lib/docx
copying docx/blkcntnr.py -> build/lib/docx
copying docx/__init__.py -> build/lib/docx
copying docx/section.py -> build/lib/docx
copying docx/shared.py -> build/lib/docx
copying docx/api.py -> build/lib/docx
copying docx/document.py -> build/lib/docx
copying docx/settings.py -> build/lib/docx
copying docx/exceptions.py -> build/lib/docx
copying docx/shape.py -> build/lib/docx
copying docx/table.py -> build/lib/docx
creating build/lib/docx/oxml
copying docx/oxml/coreprops.py -> build/lib/docx/oxml
copying docx/oxml/simpletypes.py -> build/lib/docx/oxml
copying docx/oxml/__init__.py -> build/lib/docx/oxml
copying docx/oxml/ns.py -> build/lib/docx/oxml
copying docx/oxml/section.py -> build/lib/docx/oxml
copying docx/oxml/shared.py -> build/lib/docx/oxml
copying docx/oxml/numbering.py -> build/lib/docx/oxml
copying docx/oxml/document.py -> build/lib/docx/oxml
copying docx/oxml/styles.py -> build/lib/docx/oxml
copying docx/oxml/settings.py -> build/lib/docx/oxml
copying docx/oxml/exceptions.py -> build/lib/docx/oxml
copying docx/oxml/shape.py -> build/lib/docx/oxml
copying docx/oxml/table.py -> build/lib/docx/oxml
copying docx/oxml/xmlchemy.py -> build/lib/docx/oxml
creating build/lib/docx/opc
copying docx/opc/package.py -> build/lib/docx/opc
copying docx/opc/coreprops.py -> build/lib/docx/opc
copying docx/opc/compat.py -> build/lib/docx/opc
copying docx/opc/oxml.py -> build/lib/docx/opc
copying docx/opc/constants.py -> build/lib/docx/opc
copying docx/opc/__init__.py -> build/lib/docx/opc
copying docx/opc/spec.py -> build/lib/docx/opc
copying docx/opc/shared.py -> build/lib/docx/opc
copying docx/opc/packuri.py -> build/lib/docx/opc
copying docx/opc/phys_pkg.py -> build/lib/docx/opc
copying docx/opc/exceptions.py -> build/lib/docx/opc
copying docx/opc/pkgreader.py -> build/lib/docx/opc
copying docx/opc/part.py -> build/lib/docx/opc
copying docx/opc/rel.py -> build/lib/docx/opc
copying docx/opc/pkgwriter.py -> build/lib/docx/opc
creating build/lib/docx/dml
copying docx/dml/color.py -> build/lib/docx/dml
copying docx/dml/__init__.py -> build/lib/docx/dml
creating build/lib/docx/enum
copying docx/enum/style.py -> build/lib/docx/enum
copying docx/enum/__init__.py -> build/lib/docx/enum
copying docx/enum/section.py -> build/lib/docx/enum
copying docx/enum/text.py -> build/lib/docx/enum
copying docx/enum/shape.py -> build/lib/docx/enum
copying docx/enum/table.py -> build/lib/docx/enum
copying docx/enum/dml.py -> build/lib/docx/enum
copying docx/enum/base.py -> build/lib/docx/enum
creating build/lib/docx/image
copying docx/image/tiff.py -> build/lib/docx/image
copying docx/image/gif.py -> build/lib/docx/image
copying docx/image/constants.py -> build/lib/docx/image
copying docx/image/jpeg.py -> build/lib/docx/image
copying docx/image/__init__.py -> build/lib/docx/image
copying docx/image/png.py -> build/lib/docx/image
copying docx/image/bmp.py -> build/lib/docx/image
copying docx/image/exceptions.py -> build/lib/docx/image
copying docx/image/helpers.py -> build/lib/docx/image
copying docx/image/image.py -> build/lib/docx/image
creating build/lib/docx/styles
copying docx/styles/style.py -> build/lib/docx/styles
copying docx/styles/latent.py -> build/lib/docx/styles
copying docx/styles/__init__.py -> build/lib/docx/styles
copying docx/styles/styles.py -> build/lib/docx/styles
creating build/lib/docx/parts
copying docx/parts/story.py -> build/lib/docx/parts
copying docx/parts/__init__.py -> build/lib/docx/parts
copying docx/parts/numbering.py -> build/lib/docx/parts
copying docx/parts/hdrftr.py -> build/lib/docx/parts
copying docx/parts/document.py -> build/lib/docx/parts
copying docx/parts/styles.py -> build/lib/docx/parts
copying docx/parts/settings.py -> build/lib/docx/parts
copying docx/parts/image.py -> build/lib/docx/parts
creating build/lib/docx/text
copying docx/text/run.py -> build/lib/docx/text
copying docx/text/__init__.py -> build/lib/docx/text
copying docx/text/font.py -> build/lib/docx/text
copying docx/text/tabstops.py -> build/lib/docx/text
copying docx/text/parfmt.py -> build/lib/docx/text
copying docx/text/paragraph.py -> build/lib/docx/text
creating build/lib/docx/oxml/text
copying docx/oxml/text/run.py -> build/lib/docx/oxml/text
copying docx/oxml/text/__init__.py -> build/lib/docx/oxml/text
copying docx/oxml/text/font.py -> build/lib/docx/oxml/text
copying docx/oxml/text/parfmt.py -> build/lib/docx/oxml/text
copying docx/oxml/text/paragraph.py -> build/lib/docx/oxml/text
creating build/lib/docx/opc/parts
copying docx/opc/parts/coreprops.py -> build/lib/docx/opc/parts
copying docx/opc/parts/__init__.py -> build/lib/docx/opc/parts
creating build/lib/docx/templates
copying docx/templates/default-header.xml -> build/lib/docx/templates
copying docx/templates/default-settings.xml -> build/lib/docx/templates
copying docx/templates/default-footer.xml -> build/lib/docx/templates
error: can't copy 'docx/templates/default-docx-template': doesn't exist or not a regular file
----------------------------------------
Command "/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/var/folders/0c/v_yb4q7n2h3fg94rlfrr165r0000gn/T/pip-build-fDOKCT/python-docx/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('rn', 'n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/0c/v_yb4q7n2h3fg94rlfrr165r0000gn/T/pip-_QsXvN-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/0c/v_yb4q7n2h3fg94rlfrr165r0000gn/T/pip-build-fDOKCT/python-docx/
Уведомления
- Начало
- » Python для новичков
- » Ошибка импорта
#1 Июль 22, 2015 21:51:24
Ошибка импорта
Установил python-docx.
Написал такой код:
#!/usr/bin/python3 from docx import Document as docx_parser doc_obj=docx_parser('/home/pete/work/orig all - ru.docx') doc_text='nn'.join([paragraph.text for paragraph in doc_obj.paragraphs])
Почему
Python 3.4.2 (default, Oct 8 2014, 13:14:40) [GCC 4.9.1] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from docx import Document as docx_parser
проходит, а при попытке запустить код из файла (tst100.py) я получаю
Traceback (most recent call last): File "./tst100.py", line 3, in <module> from docx import Document as docx_parser ImportError: cannot import name 'Document'
?
Отредактировано vanvanov (Июль 22, 2015 22:04:09)
Офлайн
- Пожаловаться
#2 Июль 22, 2015 23:08:26
Ошибка импорта
Вот что интересно: python-docx обновил свой API, теперь вместо старого
from docx import opendocx as docx_parser
должно быть
from docx import Document as docx_parser
Однако, из питоновской консоли работает только новый импорт (Document), а из программы — только старый (opendocx)! Как мне везде обеспечить работу нового API?
Устанавливал python-docx я с помощью sudo python3 setup.py install. Система Debian Jessie.
Отредактировано vanvanov (Июль 22, 2015 23:09:10)
Офлайн
- Пожаловаться
#3 Июль 22, 2015 23:27:27
Ошибка импорта
vanvanov
Проверяйте версии модуля который работает в коде и в консоли.
_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com
Офлайн
- Пожаловаться
#4 Июль 23, 2015 00:11:13
Ошибка импорта
JOHN_16
vanvanovПроверяйте версии модуля который работает в коде и в консоли.
Согласно pkg_resources, и в консоли, и отдельно работают python-docx 0.8.5 (а не устаревший docx).
Офлайн
- Пожаловаться
#5 Июль 23, 2015 05:30:49
Ошибка импорта
В общем то имелось ввиду:
import docx print(docx.__version__)
А случаем рядом с вашим файлом нету других docx.py файлов или тп?
_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com
Офлайн
- Пожаловаться
#6 Июль 23, 2015 05:45:22
Ошибка импорта
JOHN_16
А случаем рядом с вашим файлом нету других docx.py файлов или тп?
Да, действительно, в /usr/local/bin лежал docx.py. Обидно, ведь про это я уже нагуглил, но не придал этому значения, поскольку забыл, что раньше уже пытался установить этот модуль. Теперь работает, спасибо.
Офлайн
- Пожаловаться

Скачиваю библиотеку pip install python-docx, пытаюсь подключить from docx import Document как в документации и не видит. У многих была проблема в том, что был установлен старый модуль docx, и всё работало после его удаления, но не у меня.
Что делать? Не нашёл аналогов библиотек для Word документов.
-
Вопрос задан07 дек. 2022
-
175 просмотров
Мужики я разобрался блин блинский) Вообщем терминал в пайчарме через команду pip устанавливал библиотеки в ооочень глубокую папку отдельную от пайчарма. А в встроенном редакторе библиотек пайчарма, они какие-то не такие и старые (googletrans 3.0 например).
Просто закинул из той папки в папку lib проекта. Вопрос как теперь сразу туда скачивать)
Пригласить эксперта
Если не каких ошибок во время инсталяции не выдало, то скорее всего причина в том что устанавливает он ее в другое окружение. Например я сейчас установил данную библиотеку используяpip и она работает все нормально. если я запускаю pip show python-docxиз окружения которое использует моя IDE то он мне показывает путь и всю информацию, если же я запущу pip show python-docx из терминала где окружение другое он выдает что данная библиотека не найдена. То есть у вас проблема в окружении (вы установили библиотеку в одно окружение а импортируете из другого)
-
Показать ещё
Загружается…
28 янв. 2023, в 22:48
500 руб./за проект
28 янв. 2023, в 20:58
30000 руб./за проект
28 янв. 2023, в 20:46
50000 руб./за проект
Минуточку внимания
0 / 0 / 0
Регистрация: 12.01.2017
Сообщений: 9
1
19.09.2018, 11:33. Показов 10395. Ответов 9
Доброго времени суток. Установил python-docx и на 3.7 и на 2.7, но везде, при указании имени файла как аргумента для Document вылезает ошибка:
Python27:
Traceback (most recent call last):
File «C:qweTest2.py», line 2, in <module>
d = Document(«Test.docx»)
File «C:Python27libsite-packagesdocxapi.py», line 25, in Document
document_part = Package.open(docx).main_document_part
File «C:Python27libsite-packagesdocxopcpackage.py», line 116, in open
pkg_reader = PackageReader.from_file(pkg_file)
File «C:Python27libsite-packagesdocxopcpkgreader.py», line 32, in from_file
phys_reader = PhysPkgReader(pkg_file)
File «C:Python27libsite-packagesdocxopcphys_pkg.py», line 31, in __new__
«Package not found at ‘%s'» % pkg_file
PackageNotFoundError: Package not found at ‘Test.docx’
Python37:
Traceback (most recent call last):
File «C:qweTest2.py», line 2, in <module>
d = DocxTemplate(«C:qweTest.docx»)
File «C:UsersNikitaAppDataLocalProgramsPythonPyt hon37-32libsite-packagesdocxtpl__init__.py», line 35, in __init__
self.docx = Document(docx)
File «C:UsersNikitaAppDataLocalProgramsPythonPyt hon37-32libsite-packagesdocxapi.py», line 25, in Document
document_part = Package.open(docx).main_document_part
File «C:UsersNikitaAppDataLocalProgramsPythonPyt hon37-32libsite-packagesdocxopcpackage.py», line 116, in open
pkg_reader = PackageReader.from_file(pkg_file)
File «C:UsersNikitaAppDataLocalProgramsPythonPyt hon37-32libsite-packagesdocxopcpkgreader.py», line 32, in from_file
phys_reader = PhysPkgReader(pkg_file)
File «C:UsersNikitaAppDataLocalProgramsPythonPyt hon37-32libsite-packagesdocxopcphys_pkg.py», line 31, in __new__
«Package not found at ‘%s'» % pkg_file
docx.opc.exceptions.PackageNotFoundError: Package not found at ‘C:qweTest.docx’
| Python | ||
|
Пробовал указывать полный путь, не помогло. Как можно это вылечить?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Объект загруженного из файла/создаваемого документа .docx.
Синтаксис:
import docx doc = docx.Document(docx=None)
Параметры:
docx=None— может быть либо путем к файлу.docx(строка), либо к файловым объектом.
Возвращаемое значение:
- объект документа
Document.
Описание:
Класс docx.Document() представляет собой загруженный документ, переданный docx, где аргумент docx может быть либо путем к файлу .docx (строка), либо к файловым объектом.
Если docx=None или отсутствует, то загружается встроенный «шаблон» документа по умолчанию.
Свойства и методы объекта Document.
Document.add_heading()добавляет абзац заголовка,Document.add_page_break()добавляет разрыв страницы,Document.add_paragraph()добавляет абзац,Document.add_picture()добавляет изображения в отдельный абзац,Document.add_section()добавляет новую секцию,Document.add_table()добавляет новую таблицу,Document.core_propertiesосновные свойства документа,Document.inline_shapesсписок объектов изображенийInlineShape,Document.paragraphsсписок объектов абзацевParagraph,Document.save()сохраняет этот документ,Document.sectionsсписок объектов разделаSection,Document.settingsобъектSettings,Document.stylesобъектStyles,Document.tablesсписок объектов таблицTable,
Document.add_heading(text='', level=1):
Метод Document.add_heading() добавляет абзац с текстом text и отформатированный как заголовок. Абзац добавляется в конец документа. Метод возвращает ссылку на объект этого абзаца.
Стиль заголовка будет определяться уровнем level. Если уровень равен 0, то устанавливается стиль 'Title'. Если уровень 1 (или опущен), то используется заголовок 'Heading 1'. Эти стили определены в интерфейсе MS Word, и если стоит локализованная версия Word, то эти названия стилей будут переведены на родной язык, например «Заголовок 1».
Вызывает ошибку ValueError, если уровень выходит за пределы диапазона 0 — 9.
from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH # создание пустого документа doc = Document() # без указания аргумента `level` # добавляется заголовок "Heading 1" head = doc.add_heading('Работа с файлами Microsoft Word на Python.') # выравнивание посередине head.alignment = WD_ALIGN_PARAGRAPH.CENTER doc.add_heading('Добавление заголовка второго уровня', level=2) doc.save('test.docx')
Можно не пользоваться этим методом, а добавлять заголовки вручную, используя метод Document.add_paragraph() с последующим форматированием.
from docx import Document from docx.shared import Pt doc = Document() # добавляем текст прогоном run = doc.add_paragraph().add_run('Заголовок, размером 24 pt.') # размер шрифта run.font.size = Pt(24) run.bold = True doc.save('test.docx')
Document.add_page_break():
Метод Document.add_page_break() добавляет разрыв страницы и возвращает ссылку на объект Paragraph, содержащий только этот добавленный разрыв страницы.
По своей сути, метод Document.add_page_break() эквивалентен функции page_break(), которая определена в коде ниже:
from docx import Document def page_break(): """Метод Document.add_page_break()""" from docx.enum.text import WD_BREAK p = doc.add_paragraph() p.add_run().add_break(WD_BREAK.PAGE) doc.add_paragraph() return p doc = Document() page_break() doc.save('test.docx')
Document.add_paragraph(text='', style=None):
Метод Document.add_paragraph() добавляет абзац в конец документа, заполненный текстом text и имеющий стиль абзаца style. Возвращает ссылку на объект добавленного абзаца Paragraph.
Аргумент text может содержать символы табуляции t, которые преобразуются в соответствующую XML-форму. Текст также может содержать символы новой строки n или возврата каретки r, каждый из которых преобразуется в разрыв строки.
Аргумент style может принимать строку с
Именем Стиля
или объект стиля Style.
Важно!!! Значением аргумента style может быть
Имя Стиля
, которое встроено в интерфейс MS Word. Встроенные стили хранятся в файле WordprocessingML под своим английским именем, например ‘Heading 1’, и не зависят от локализации MS Word. Так как модуль python-docx работает с файлом WordprocessingML, то и поиск стиля должен использовать английское имя. Если файл WordprocessingML не найден (MS Word не установлен, например в OS Linux) то модуль python-docx работает со своей версией этого файла. Что бы создать сопоставление между именами стилей на местном языке и именами в английском стиле посетите эту ссылку.
Пользовательские стили, которые ВЫ сами настроили, не локализованы и доступны по имени, как они отображается в пользовательском интерфейсе MS Word.
Пример добавления абзаца с текстом и стилем:
from docx import Document from docx.shared import Pt doc = Document() # добавляем абзацы doc.add_paragraph('Абзацы в Word имеют основополагающее значение.') doc.add_paragraph('Стиль абзаца как цитата', style='Intense Quote') doc.add_paragraph('Обычный список.', style='List Bullet') doc.add_paragraph('Обычный список.', style='List Bullet') # можно применить стиль и так doc.add_paragraph('Нумерованный список.').style='List Number' # а можно применить стиль позже, к объекту абзаца `p` p = doc.add_paragraph('Нумерованный список.') p.style='List Number' doc.save('test.docx')
Document.add_picture(image_path_or_stream, width=None, height=None):
Метод Document.add_picture() добавляет изображения в отдельный абзац в конце документа при этом возвращает ссылку на объект добавленного изображения Document.inline_shapes. Абзац будет содержать изображение в image_path_or_stream, масштабированное по ширине width и высоте height.
Если ни ширина, ни высота не указаны, то изображение отображается в исходном размере. Если указан только один размер, то он используется для вычисления коэффициента масштабирования, который затем применяется к неопределенному размеру, сохраняя соотношение сторон изображения.
Собственный размер изображения рассчитывается с использованием значения точек на дюйм dpi, указанного в файле изображения. Если dpi в изображении отсутствует, как это часто бывает, то по умолчанию будет использоваться 72 dpi.
По своей сути, метод Document.add_picture() эквивалентен функции add_img(), которая определена в коде ниже:
from docx import Document from docx.shared import Mm def add_img(image_path, width=None, height=None): """Метод Document.add_picture()""" img = doc.add_paragraph().add_run().add_picture(image_path, width, height) return img doc = Document() add_img('/path/to/image.jpg', width=Mm(25)) doc.save('test.docx')
Document.add_section(start_type=2):
Метод Document.add_section() добавляет новую секцию/раздел в конец документа. Необязательный аргумент start_type должен быть членом перечисления WD_SECTION_START и по умолчанию равен WD_SECTION.NEW_PAGE, если не указан.
Метод возвращает ссылку на объект добавленного раздела Section, который позволяет настраивать/изменять макет документа, включая колонтитулы.
Document.add_table(rows, cols, style=None):
Метод Document.add_table() добавляет таблицу, содержащую количество строк rows и столбцов col в строках и столбцах соответственно и стиль таблицы style. Возвращает объект Table.
Аргумент style может быть именем стиля абзаца. Если style=None, то таблица наследует стиль таблицы, определенный в документе по умолчанию.
Document.core_properties:
Свойство Document.core_properties представляет собой объект CoreProperties, обеспечивающий доступ для чтения и записи к так называемым основным свойствам документа (автор, категория, комментарии, когда и кем создан, ключевые слова, язык, тема, заголовок и версия).
Например:
from docx import Document doc = Document() prop = doc.core_properties prop.title = 'Пример' prop.author = 'docs-python.ru' prop.comments = 'Сгенерирован модулем python-docx' doc.save('test.docx')
Каждое свойство может быть одного из трех типов: str, datetime.datetime или int. Строковые свойства ограничены длиной до 255 символов и возвращают пустую строку '', если не заданы. Свойства даты назначаются и возвращаются как объекты datetime.datetime без часового пояса, то есть в формате UTC. За преобразование часового пояса отвечает клиент. Свойства даты возвращают значение None, если не задано.
Модуль python-docx не устанавливает автоматически какие-либо основные свойства документа. Если python-docx добавляет часть основных свойств, то они содержат значения по умолчанию для title, last_modified_by, revision. Клиентский код должен обновлять такие свойства, как revision и last_modified_by, если такое поведение желательно.
Основные свойства документа:
core_properties.author— типstr, автор документа;core_properties.category— типstr, классификация содержимого. Примеры значений могут включать: Резюме, Письмо, Финансовый прогноз, Предложение или Техническая презентация;core_properties.comments— типstr, комментарии к документу;core_properties.content_status— типstr, статус завершения документа, например ‘черновик’;core_properties.created— типdatetime.datetime, время первоначального создания документа;core_properties.identifier— типstr, однозначная ссылка на ресурс в заданном контексте, например ISBN;core_properties.keywords— типstr, описательные слова или короткие фразы, которые могут быть использованы в качестве поисковых запросов для этого документа;core_properties.language— типstr, язык на котором составлен документа;core_properties.last_modified_by— типstr, имя или другой идентификатор (например, адрес электронной почты) лица, последним изменившего документ;core_properties.last_printed— типdatetime.datetime, время последней печати документа;core_properties.modified— типdatetime.datetime, время последней модификации документа;core_properties.revision— типint, номер редакции, увеличиваемый на 1 при каждом сохранении документа. Обратите внимание, что модульpython-docxавтоматически не увеличивает номер редакции при сохранении документа;core_properties.subject— типstr, тема документа;core_properties.title— типstr, название документа;core_properties.version— типstrверсии документа в произвольной форме;
Document.inline_shapes:
Свойство Document.inline_shapes представляет собой последовательность объектов InlineShape.
Объект InlineShape — это объект встроенной фигуры, содержащееся в текстовом слое документа и ведущий себя как глиф символа, переходящий как другой текст в абзаце. Другими словами, объекты InlineShape обрабатываются как символы и размещаются как символы в строке текста.
У встроенных фигур InlineShape нет имен. Встроенной фигурой может быть только изображение, объект OLE или элемент управления ActiveX.
Свойство Document.inline_shapes поддерживает функцию len(), итерацию и доступ к объектам по индексу.
Свойства изображения в документе .docx:
inline_shape.height— для чтения/записи, высота изображения (поддерживает еще.cmи.mm, например:height.mm);inline_shape.width— для чтения/записи, высота изображения (поддерживает еще.cmи.mm, например:width.cm);inline_shape.type— только для чтения, тип связанной фигуры доступен как перечислениеWD_INLINE_SHAPE.
Тип связанной фигуры может быть:
WD_INLINE_SHAPE.LINKED_PICTURE;WD_INLINE_SHAPE.PICTURE;WD_INLINE_SHAPE.CHART;WD_INLINE_SHAPE.SMART_ART;WD_INLINE_SHAPE.NOT_IMPLEMENTED.
Получить сведения о всех встроенных фигур в документе можно в цикле:
from docx import Document # открываем существующий документ doc = Document('/path/to/example.docx') for i, fig in enumerate(doc.inline_shapes, start=1): print(f'nИзображение №{i}:') print(f't- Ширина и высота в мм: {fig.width.mm}, {fig.height.mm};') print(f't- Тип изображения: {fig.type}.')
Document.paragraphs:
В основном используется при чтении/изменении стиля абзацев существующего документа или извлечении текста.
, что абзацы с пометками редакции, такими как <w:ins> или <w:del>, не отображаются в этом списке.
Пример:
>>> from docx import Document # открываем существующий документ >>> doc = Document('/path/to/example.docx') # количество абзацев в документе >>> len(doc.paragraphs) # текст первого абзаца в документе >>> doc.paragraphs[0].text # текст второго абзаца в документе >>> doc.paragraphs[1].text # текст первого прогона второго абзаца >>> doc.paragraphs[1].runs[0].text
Document.save(path_or_stream):
Метод Document.save() сохраняет этот документ в path_or_stream, который может быть либо путем файловой системы (строка), либо файловым объектом.
Document.sections:
Свойство Document.sections представляет собой последовательность объектов раздела Section, соответствующих разделам в документе, в порядке их следования. Поддерживает функцию len(), итерацию и доступ к элементам по индексу. Используется при настройке макета вновь создаваемого и чтении/изменении существующего документа.
В несложных документах обычно присутствует только одна секция/раздел. В документах, где присутствуют разные ориентации страниц или применяются разные макеты страниц, для этих целей используются разные секции/разделы документа.
Пример:
>>> from docx import Document # открываем существующий документ >>> doc = Document('/path/to/example.docx') # количество разделов документа >>> len(doc.sections) # сведения первого раздела >>> doc.sections[0].orientation >>> doc.sections[0].page_width.cm >>> doc.sections[0].page_height.cm
Document.settings:
Свойство Document.settings представляет собой объект Settings, предоставляющий доступ к настройкам этого документа на уровне XML.
Document.styles:
Свойство Document.styles представляет собой объект Styles, обеспечивающий доступ к встроенным в пользовательский интерфейс MS Word стилям, которые в свою очередь можно перенастроить под себя. В модуле python-docx эти стили дублируются и постоянно обновляются.
Свойство поддерживает len(), итерацию и доступ в стиле словаря — по имени стиля, например Document.styles['Normal'].
Методы и свойства объекта Styles.
Styles.add_style(name, style_type, builtin=False):
Метод Styles.add_style возвращает недавно добавленный объект стиля для типа style_type который будет идентифицироваться по имени name. Тип стиля style_type задается перечислением WD_STYLE_TYPE.
Стиль, который будет встроен в пользовательский интерфейс MS Word, должен быть определен путем передачи True для необязательного аргумента builtin.
Styles.default(style_type):
Метод Styles.add_style() возвращает стиль по умолчанию для style_type или None, если для этого типа не определено значение по умолчанию.
Styles.element:
Свойство Styles.element представляет собой элемент lxml, проксируемый этим объектом.
Посмотреть все стили, встроенные в MS Word можно так:
>>> from docx import Document >>> doc = Document() # количество встроенных стилей >>> len(doc.styles) # 164 >>> for name in doc.styles: ... print(name) # _ParagraphStyle('Normal') id: 139972403301584 # _ParagraphStyle('Header') id: 139972421518768 ...
Изменить настройку стиля текста документа по умолчанию можно как-то так:
from docx import Document from docx.shared import Pt doc = Document() # получаем доступ к стилю 'Normal' # (это стиль текста по умолчанию) style = doc.styles['Normal'] # меняем название шрифта style.font.name = 'Arial' # меняем размер шрифта style.font.size = Pt(12) ...
Document.tables:
Свойство Document.tables представляет собой список объектов таблиц Table, соответствующих таблицам в документе, в порядке следования их в документе. В основном используется при чтении/изменении стиля таблиц существующего документа или извлечении данных таблиц.
, что в этом списке отображаются только таблицы, расположенные на верхнем уровне документа. Таблица, вложенная в ячейку таблицы, не отображается. Таблица с пометками ревизии, такими как <w:ins> или <w:del>, также не будет отображаться в списке.
Я пытаюсь сделать что-либо, рассматривая документ Word, используя библиотеку docx в python. Проблема в том, что бы я ни импортировал, я получаю сообщение об ошибке «no attribute». Для примера — Документ
from docx import Document
дает выход
cannot import name Document
и любая попытка использовать Document заканчивается с ошибкой
AttributeError: 'module' object has no attribute 'Document'
Любой синтаксис кажется правильным. Я использую модуль docx версии 0.2.4.
Спасибо за помощь.
28 июль 2014, в 11:57
Поделиться
Источник
3 ответа
из официальной документации
версии python-docx версии 0.3.0 и выше не совместимы с API с предыдущими версиями.
поэтому попробуйте обновить пакет или использовать старый api
go1dshtein
28 июль 2014, в 07:22
Поделиться
У меня была аналогичная проблема. Я использовал pip install docx в своей виртуальной среде. Исправлена pip uninstall docx а затем pip install python-docx.
Smoke Liberator
14 янв. 2017, в 21:17
Поделиться
вы уверены, что правильно установили docx? Потому что кажется, что он не установлен. Вы должны попробовать использовать pip или easy_install для правильной установки.
http://python-docx.readthedocs.org/en/latest/user/install.html
Например, я никогда не устанавливал его, и я получаю эту следующую ошибку кода, если я пытаюсь импортировать ее, что в значительной степени зависит от того, что вы получаете:
Traceback (most recent call last):
File "docx.py", line 1, in <module>
from docx import Document
File "/Users/xxxx/Documents/Python/docx.py", line 1, in <module>
from docx import Document
ImportError: cannot import name Document
Clad Clad
28 июль 2014, в 08:11
Поделиться
Ещё вопросы
- 0не может появляться в постоянном выражении
- 0как залить фоновый цвет элемента nav
- 1создание avd из командной строки с поддержкой клавиатуры
- 1Является ли Android SQLiteStatement (подготовленный оператор) поточно-ориентированным? Т.е. «связать *, связать *… выполнить» атомарно?
- 0Phantom элемент <span>, использующий ImportXML с XPath в электронной таблице Google
- 1Отклонить диалог прогресса в Android
- 0результат ввода поля раз 2 появляется в окне не div
- 1Python: чтение определенных строк из файла, замена определенного символа в этих строках и сохранение файла.
- 1Windows Phone 8.1 масштабирование изображения
- 0Удаление вида из DOM в магистрали
- 1Использование предсказаний Keras ImageDataGenerator для индексации приводит к возникновению ошибки типа unhashable
- 0PHP Получить значения из ассоциативного массива на основе списка соответствующих ключей
- 1Как использовать обычный JavaScript для удаления с подтверждением в рельсах?
- 1Преобразование старшего байта в 2-байтовое число
- 1Изменение цвета фона некоторых строк в выпадающем списке
- 0Обновление источника данных Icenium Kendo UI не вызывается
- 1Как вставить код JavaScript в шаблон Handlebars?
- 1Присоединиться к таблице в проблеме отображения HNibernate
- 1изменение свойств TextView в ListView приводит к сбою приложения
- 1Вложенная панель обновления, вызывающая обновление родительской панели обновления
- 1Android я могу избежать вызова onCreate ()?
- 0JQuery — Что я делаю не так?
- 1Apache обрабатывает несколько доменов с помощью mod_wsgi
- 1Как я могу получить все группы локального пользователя, используя ObjectQuery?
- 1Установить значение столбца на основе индексированного фильтра даты и времени
- 1Отправка объекта в библиотечный класс в Android
- 0Как обработать POST-массив JS в Pyramid
- 1Положение байта в Java
- 1Как исправить пропорции выхода
- 0MySQL запрос, который не возвращает идентификатор с несколькими записями
- 1Получение собственных сообщений от Chrome на Java
- 0Создание REST API с помощью SLIM Framework. Поддержание REST, но предоставление правильного представления
- 1Как вызвать метод после `computed` в Emberjs
- 1Доступ к групповым индексам панд по второму индексу
- 1Запуск Google Maps с большим количеством параметров
- 1System.Management.Automation.Remoting.PSRemotingTransportException: доступ запрещен.
- 1MetadataMBeanInfoAssembler не поддерживает динамические прокси JDK
- 0AngularJS — Как изменить маршрут, только если что-то верно? [Дубликат]
- 0Невозможно выровнять метку по вертикали относительно флажка
- 1Хотите лучший способ развернуть файлы свойств java.util.ResourceBundle с помощью приложения Java
- 1перемещение индекса в другое место двоичного файла
- 0Создание учетной записи с помощью таблиц PHP, MySQL и HTML
- 0Обновить первое вхождение значения во временном интервале
- 1Открытие объявлений метода перечисления Java в Eclipse
- 1Сохранить android.app. Состояние приложения
- 1Java: создание строки длины X со случайными символами
- 0Нужно выровнять флажок, добавить несколько записей и просмотреть файл с датами при редактировании в extjs4?
- 0Вкладки JQuery очень медленное время отклика
- 1Как установить событие на сцене при перетаскивании мышью?
- 0Как отсортировать массив в C ++ определенным образом