С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23

Работа с вордом и позже с экселем

01.04.2021, 00:03. Показов 5000. Ответов 19

Студворк — интернет-сервис помощи студентам
Всем доброй ночи!

Сразу говорю, что гуглил, просто, хотелось бы спросить мнение более опытных людей чем я, чтобы идти по правильному алгоритму действий ибо работка будет относительно большая.

Мне нужно научиться копировать таблицы из ворда и экселя в latex-документ. С экселем пока не работал, хочу пока с вордом научится. Алгоритм представляю так: Человек указывает ссылку на файл ворда в tex-документе. А так же название к таблице, чтобы можно было понять какую именно таблицу в ворде нужно перенести в латех. После чего, срабатывает паттерн строитель:
1) Создается общая структура таблицы.
2) Берутся данные из первой ячейки таблицы.
3) Ячейка проходит несколько стадий проверки на "форматирование". К примеру, является ли ячейка курсивной, жирной, или обычной. Как именно размещается текст (Слева, центр, справа, внизу, вверху) и т.д. По-сути данные ходят по различным функциям и если значения сходятся, то на данные одевается "одежка". Типа, если данные жирные, то: \textbf{Данные} И так далее. Пока не пройдут все стадии проверки.
4) И такое проходит каждая ячейка, пока не сформируется вся таблица.

Я понимаю, что все это слишком просто, но пока картина виднеется вот так. Но когда начал выполнять, то столкнулся с одной фигней. Как из ворда вытащить все данные о таблице? Я знаю про библиотеку python-docx. Однако пока рылся в документации, понял что можно взять данные из таблицы, но можно ли узнать форматирование ячеек?
Есть вариант в превращение ворда в XML и работать уже с этим. Однако, когда я сохранил ворд в XML (В ручную, "Сохранить как") и открыл его, то там несколько строчек и одна строка с размером в десятки-сотни тысяч символов. Не очень читабельно и не понятно как понять где таблица и как вообще с этим работать.

Что можете посоветовать по моей задачи? Какой вариант лучше и удобнее? Если скажете, что XML, то как там искать нужную информацию?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2021, 00:03
Ответы с готовыми решениями:

Некорректное отображение символов при работе с экселем и вордом
Доброго времени суток, прошу помощи. Не могу разобраться что нужно сделать для корректного отображения символов в Word и Excel. ...

Возможно ли работать с MS PowerPoint через OLE, как с вордом и экселем?
И где смотреть инфу по работе с Power Point или литератру или справочник по коммандам Добавлено через 2 минуты И кстати подерживает...

Работа с вордом
Нужно чтоб в шаблон(который создан) в водились данные . Что мне нужно у меня ошибка в чем проблем? в чем проблема? код и фото прилогаю ...

19
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
01.04.2021, 09:40
Цитата Сообщение от jkfdf Посмотреть сообщение
latex-документ
никогда не сталкивался и не слышал о нём, поэтому пришлось гуглить:
Документ LaTeX — это текстовый файл, содержащий специальные команды языка разметки. Сам документ делится на преамбулу и тело. ... Тело документа содержит собственно текст документа и команды разметки. Оно должно находиться между командами \begin{document} и \end{document}
а зачем в малоизвестный, а не хтмл?
1
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23
01.04.2021, 10:08  [ТС]
Ципихович Эндрю, Латех это типа язык заметок для создания документов. Как Ворд, но по-другому. Это долго объяснять, но если вкратце: вы пишете код, а на выходе получаете годный пдф-документ. Латех используют в печатных изданиях и для научных работ. К хтмл или к веб-разработке он никакого отношения не имеет.

Мне же он нужен для дипломного проекта. Собственно, латех это звезда моего проекта: все вокруг него кружится.

Для моего вопроса это не суть важно. Мне интересно как из Ворда можно взять данные о любой таблице в нем, так чтобы я знал форматирование каждой ячейки.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
01.04.2021, 10:11
Цитата Сообщение от jkfdf Посмотреть сообщение
Мне интересно как из Ворда можно взять данные о любой таблице в нем, так чтобы я знал форматирование каждой ячейки.
так вы выложите код, то что сейчас имеете-может сдвинется
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
01.04.2021, 10:12
Ципихович Эндрю, latex - это такой light word, но документ жёстко структурированый, это удобно.
Цитата Сообщение от jkfdf Посмотреть сообщение
. С экселем пока не работал, хочу пока с вордом научится.
А вот это зря, с екселем проще - там кроме таблиц ничего нет, и вокрут таблиц всё и крутится.
Цитата Сообщение от jkfdf Посмотреть сообщение
Как из ворда вытащить все данные о таблице?
Да-да, вот именно поэтому.
2
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23
01.04.2021, 10:25  [ТС]
Ципихович Эндрю, Код? Он тут не слишком поможет) Но если нужно то скину. Он пока особо ничего не делает, кроме как ищет нужный файл. Я остановился, чтобы понять хороший ли вариант я выбрал (С python-docx) Или лучше сменить его пока не поздно.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Generation_latex():
 
    def __init__(self):
        self.doc = ""
 
    def search_docx_file(self, name_address): # Search file-docx
        if os.path.isfile(name_address):
            self.doc = docx.Document(name_address)
            self.properties = self.doc.core_properties
            self.search_docx_tables()
        else:
            print("O, no!")
 
    def search_docx_tables(self):
        pass
 
if __name__ == '__main__':
    app = Generation_latex()
    app.search_docx_file('demo.docx')
Добавлено через 2 минуты
dondublon, Мне желательно и с вордом научиться и с экселом. С экселом может и проще, но хотелось бы первого зверя (ворда) одолеть. Не хочу это на последок оставлять. Меня и так трясет из-за диплома.

Да и должен же быть способ вытащить данные из ворда. XML-структура все-таки.

Добавлено через 2 минуты
dondublon, О, здраствуйте, я вас не сразу узнал) Вы мне помогали по теме "Python pyqt5 view pdf"
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
01.04.2021, 11:43
jkfdf, ну, тогда ищите. xml трогать не надо, python-docx должен дать способ.
Гуглить не про python-docx, конечно - он лишь предоставляет доступ к структуре документа. Вам надо найти таблицы в этой структуре. VBA может помочь.
1
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
01.04.2021, 11:48
Цитата Сообщение от dondublon Посмотреть сообщение
VBA может помочь
из этого:
Python
1
2
3
4
5
6
7
8
# через Python автоматически запускать макрос в Ворде, макрос написан в vba
import win32com.client # pip install win32com
word = win32com.client.Dispatch('Word.Application')
doc = word.Documents.Open(r'd:\Macros.docm')  # место нахождения в папке
word.Run('Macros')
doc.Save()
doc.Close()
print('Готово')
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
01.04.2021, 11:53
Ципихович Эндрю, нет, не то.
VBA позволяет посмотреть структуру и найти что нужно - таблицы. Потом переложить это на python-docx.
1
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
01.04.2021, 11:55
Цитата Сообщение от dondublon Посмотреть сообщение
VBA
если он пролетает.........то я не знаю-он для этого и заточен, работать с Вордом, но я на медаль не претендую))
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
01.04.2021, 12:03

Я об этом.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.04.2021, 12:35
Цитата Сообщение от jkfdf Посмотреть сообщение
Есть вариант в превращение ворда в XML и работать уже с этим.
docx это уже xml запакованный в zip.
Изучать нужно не python-docx, а внутренний API MS Word и MS Excel. В официальной документации microsoft.
И MS Word и MS Excel имеют в ОС свои COM объекты обращаться к которым можно через python враппер pywin32 (пример у Ципихович Эндрю, ), только по части данных о таблице там что-то посложнее будет в плане кода. (Хотя можно и VBA макросами, если разбираешься).

Цитата Сообщение от jkfdf Посмотреть сообщение
так чтобы я знал форматирование каждой ячейки.
У каждого объекта ворда есть есть куча свойств. Изучай.
https://docs.microsoft.com/ru-... /word.cell
1
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
01.04.2021, 13:33
ну пусть ТС определяется, просьба в оконцовке выложить код- на чём остановились, спс

Добавлено через 31 минуту
кстати можно и как? изменить код в посте № 8, чтобы исполнялся скрипт не из файла а из Normal.dotm с указанием модуля, спс
1
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23
01.04.2021, 18:13  [ТС]
Хм. В принципе, пока ничего сильно не понял, но вектор мыслей вроде задан за это вам спасибо. Особенно идея с VBA. Никогда не думал, что вернусь к нему) А это ведь мой первый язык программирования

Так что если подвести итоги, то... Найти таблицу не то чтобы сложно. я вижу три варианта:
1) Получать данные о форматирование через VBA. Хотя таким я не занимался(когда учил его. Там веселуха была в написание калькулятора), но надеюсь VBA сумеет вывести то что мне надо. Запустить через питон можно, что и славно. Может даже через терминал попробую.
2) Не совсем понял про python-docx. Найти нужную табличку он может. На крайняк можно ввести условия по типу, что перед таблицой нужен абзац с названием таблицы. Да, костыль, но пуфиком. Но можно ли через эту библиотеку узнать что-то про данные в ячейке таблицы? Типа, жирный текст внутри или нет.
3) Работать напрямую через XML. Сложновато как мне кажется ибо там некие схемы XML. Я знаю что это, но никогда не работал с ними. И пока смотрел структуру XML, то заметил что структура таблички и его данные хранятся в разных участках кода.

Выложить код? Ну. Как только напишу, так и выложу, если не забуду. Правда когда -- не знаю. У меня здесь сложное маневрирование между делами и на диплом приходиться выделать не так много времени.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
01.04.2021, 19:43
jkfdf, питон не даст вам auto-completion, a VBA даст. Он куда лучше дружит с COM-интерфейсами, через которые надо общаться с документом.
Кроме того, в VBA - не в языке, а в IDE - есть object browser - тот самый, который на скриншоте. То есть там вы можете посмотреть все эти методы в удобном виде. Чтобы потом их скопипастить в питон.
1
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23
02.04.2021, 12:53  [ТС]
dondublon, А может и даст. Посидел и изучил документацию python-docx и вроде как он мне даст большинство форматирование каждого символа.

Нахождение таблиц в принципе сделал. Через костыль (Нужно, чтобы первая строка таблицы содержала название таблицы), но думаю я смогу убедить на дипломе, что это лучший вариант. Мне уже самому кажется что это лучший вариант)

Конечно, самый интересный вопрос, а что если у нас в ячейке таблицы формула.... Конвертация формула из ворда в латех может создать проблему. Но до этого вопроса доживу. Может вообще не сделаю или придумаю хитрое решение.
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,300
03.04.2021, 17:37
ещё нужно не забывать о Не здравом смысле, так как никто не гарантировал, что заголовок столбца таблицы будет
РаЗнородным
и потом гадай, что же применить.........
кстати вба скажет о форматировании ячеек и того, чего нужно, а как в скрипт питона передать это? я вижу только через текстовый файл, ну понятно, что через запись строки в созданную веточку реестра-но это дебри, а как ещё можно?
1
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23
04.04.2021, 14:49  [ТС]
Ципихович Эндрю, Эээ, мне пока сложно ответить на подобное. Вкратце, python-docx позволяет видеть некоторую часть стиля. По чтению документации, вроде более чем мне необходимо. К примеру, то что вы написали "РаЗнородным" с точки зрения ворда является разным набором символов, что разделены между собой стилями (Цвет, жирный/курсив и т.д.). Библиотека python-docx работает также. Тоесть, я должен обработать каждый такой набор слов (Тут уже идет полная конвертация полученных данных в latex-код, но в теории это уже будет попроще в плане понимания как делать) и в теории этого должно хватить с лихвой. Знаю, что на практике все можно рушиться, но думаю надо пробовать все же не лезть в макросы без крайней необходимости.

Давайте так. Если все будет гуд, до где-то до конца следующей недели я хочу уже полностью сделать работу с таблицами вордом. Если интересно какая именно будет реализация моей идеи, то сюда отпишусь.
0
2 / 2 / 0
Регистрация: 08.04.2017
Сообщений: 23
18.04.2021, 11:06  [ТС]
Ципихович Эндрю, dondublon, Ну, вообщем прошло несколько больше времени чем я ожидал. Но вроде сделал. Эксель уже не делаю, но ворд сделал именно через python-docx. Как оказалось, самая сложная задача это объединение ячеек между собой. Писал алгоритм больше чем все остальное по ворду. Существует 100500 нюансов со стороны как и ворда, так и латеха вместе с библиотекой python-docx. Сложно реализовать универсальное и простое решение. Но вроде как сумел. С точки зрения реализаций всяких жирный, курсив и т.д. В целом это не сложно. За несколько дней все сделал. В ворде все делиться на параграфы, а параграфы на run. Эти run-ы можно обработать. Вот через них я и работаю с текстом.
Вот пример. Я его укротил, чтобы не сильно много кода было:

Python
1
2
3
4
5
6
7
8
9
    def run_bold(self,string_r,status):
        if status == "True":
            return "\\textbf{" + string_r +"}"
        else:
            return string_r
....
for paragraph in self.name_table.cell(row, column).paragraphs:
    for run in paragraph.runs:
        string_rr = self.run_bold(string_rr, str(run.bold))
Все же решение для ворда заняло целых 575 строчек кода, так что все выложить немного сложно Да и до сдачи диплома уж точно не хочу.

Всем спасибо еще раз за помощь)
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
19.04.2021, 09:36
jkfdf, чота по-моему вы не тем занимаетесь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2021, 09:36
Помогаю со студенческими работами здесь

работа Бд с вордом
Товарищи помогите с вордом... (я начинающий в этом деле) Мне нужно чтоб я выбрал должность из списка должностей нажал на кнопку и это...

Корректировка и работа с экселем
Всем привет.Подскажите,пож-та,можно ли работать с экселем через PS? 1)Например файл 1.csv переименовать в 1_2.csv 2)так же...

Работа с Экселем через C#
Доброго дня! Я пока учусь, но в итоге хочется разработать программку для работы, которая автоматизирует некоторые процессы. В итоге у...

Работа с вордом(Вывод страницы в колонтитул)
Не могу вывести номер страницы в колонтитул. нашёл ссылку http://msdn.microsoft.com/ru-ru/library/ms178795(v=vs.90).aspx там вроди пример...

Ошибки с экселем.
Пишу программу, которая будет редактировать документы эксель. Подключил модули ComCtrls, ExcelXP. Имеется вот такая процедурка procedure...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru