Меню

From docx import document ошибка

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. Обидно, ведь про это я уже нагуглил, но не придал этому значения, поскольку забыл, что раньше уже пытался установить этот модуль. Теперь работает, спасибо.

Офлайн

  • Пожаловаться

xXx_Unity_xXx

Скачиваю библиотеку pip install python-docx, пытаюсь подключить from docx import Document как в документации и не видит. У многих была проблема в том, что был установлен старый модуль docx, и всё работало после его удаления, но не у меня.
Что делать? Не нашёл аналогов библиотек для Word документов.
6390b2d7136a7414653965.jpeg


  • Вопрос задан

    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
1
2
from docx import Document
d = Document("Test.docx")

Пробовал указывать полный путь, не помогло. Как можно это вылечить?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



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 ++ определенным образом

Сообщество Overcoder

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Frm 92102 возникла ошибка сети
  • Frm 41211 ошибка интеграции сбой ssl при прогоне другого продукта