Страницы

Поиск по вопросам

Показаны сообщения с ярлыком open-office. Показать все сообщения
Показаны сообщения с ярлыком open-office. Показать все сообщения

понедельник, 24 февраля 2020 г.

OpenOffice неведомые текстовые поля

#open_office


Понимаю что для профи вопрос покажется детским лепетом, но меня он поставил в тупик.
Я только учусь, и формулировка вопроса без каких либо сносок и объяснений загоняет
в ступор. Есть задание - создать таблицу в документе Writer и в ячейках сделать тестовые
поля, дословно ( В ячейках где пользователь будет вводить собственные данные необходимо
разместить текстовые поля).

Вставить числовое поле - ячейка С1, максимальное значение 1, по умолчанию 1, шаг
значения 1.   
    


Ответы

Ответ 1



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

четверг, 23 января 2020 г.

python3. Как открыть(получить данные) офисные документы (doc,odt, etc…)

#python_3x #парсер #open_office


Подскажите, как в python3  открыть и получить данные из офисных файлов, таких как
odt, doc, docx, rtf. Хотя бы odt.

То что odt  и docx  это по сути архивы в курсе, можно их по идее распаковать, и посмотреть
на файл content.xml (если не ошибаюсь), но может есть более современные или удобные
способы.

Все что нашел, это для создания таблиц  ods. 

Нашел модули uno, pyoo  и везде описано как создать таблицы, а как получить данные
из офисных документов не нашел.

Задача пробежаться по всем существующим в каталоге(подкаталогах) файлах, найти или
проанализировать нужное и вывести результат в отдельный файл.

Сейчас подобное частично реализовано на bash'e, хочу переписать все на python3.

Подскажите или покажите как искать.
    


Ответы

Ответ 1



Ну вот навскидку пара библиотек: https://pypi.python.org/pypi/ezodf https://github.com/eea/odfpy Конечно работать через сервисы OpenOffice - более правильный путь самурая, но для этого нужен хотя бы "безголовый" OpenOffice, а его может не оказаться. Кроме того, мне кажется, сервисы OpenOffice будут разочаровывать показателями производительности при обработке большого количества файлов, но вы получите полный функционал. Кстати нужно учитывать что при использовании OpenOffice придется руководствоваться документацией по Java API и адаптировать ее под Python

Ответ 2



Оформлю как ответ, чтоб в комментариях не рыскать, если tutankhamun не против, если против, то в свой ответ добавьте и я свой удалю. И так, вопрос получилось решить с помощью модуля ezodf ( не много документации его ). При установке будьте внимательны, если у вас и 2 и 3 версии python, для третьей я ставил так python3 setup.py install. Небольшой пример кода, для наглядности import ezodf odt = ezodf.opendoc('/home/user/python/text.odt') list=[] # Запускаем цикл for и перебираем все что нашли в файле) for i in odt.body: if i.text == None: print('no') else: list.extend(re.findall(r"[\w']+", i.text.lower())) Поясню, использовал i.text заместо i.plaintext(), для ловли нескольких строк со значением None (видимо какие то служебные данные, не разбирался), просто plaintext() добавляет пустые элементы в список и мне на тот момент показалось,Что через text будет быстрее, но утром могу переосмыслить) а тут list.extend(re.findall(r"[\w']+", i.text.lower())) - с существующему списку list присоединяю или даже так, этим расширяя существующий список list. Выбираю все слова регулярным выражением (каждое слово из документа в список), применяю к ним нижний регистр и все. так это только кусок, потому может смотреться не очень, и многое что можно добавить, но по крайней мере теперь понятно как читать документы. Спасибо tutankhamun за подсказки.

четверг, 2 января 2020 г.

Массовая смена автора документа

#linux #bash #office #open_office #libre_office


Подскажите как быть)

Предыстория: 

У друга на работе уволился админ и на компе, буха, юрика
и самого директора, изменил пользователя на Х%Й Булыжников или Пися
Камушкин - не суть)
Но обнаружили это через неделю или две, когда открыли документы doc,
odt,xsl  и прочие офисные, нажали файл - Свойства и там увидели сие
чудо) а файлы они эти куда-то шлют и там через эту процедуру, даты
сверяют в случае чего,)


Как можно массово такие офисные файлы перевладеть (сменить или убрать автора)?)

Руками долго (создать новый док, перекинуть все в него и сохранить - их
там сотни документов) естественно, теперь Пользователь нормальный, но
документы некоторые остались с пасхалкой)))

Подскажите, как под linux  или windows  можно автоматически поменять.

Думаю что скриптом можно, но не пойму как работать с api или самой libreOffice  из
консоли

Спасибо...

p.s. как выяснилось - админа очень обидели... и потом поняли что не
правы, но было поздно)

Конвертировать в другой формат, в надежде смены автора так же безсмысленно

libreoffice -env:UserInstallation=file:///home/firefedot/.config/libreoffice-alt
--headless --convert-to odt *.doc


В итоге остался тот же автор создания документа и те же авторы изменений.
    


Ответы

Ответ 1



Спасибо @Qwertiy за подсказку. В общем пока что вариант такой нашел. Сначала приводим все нужные файлы к типу odt, таким образом libreoffice -env:UserInstallation=file:///home/firefedot/.config/libreoffice-alt --headless --convert-to odt *.doc Затем можно скриптом, а можно и руками, делаем так. Распаковывем наш файл ODT в папку unzip file.odt -d folder После этого ищем и заменяем нужного/ненужного автора grep NONAMES meta.xml --color # Или если не знаем имени, то grep creator meta.xml --color И мы увидим нужное нам, оно будет подсвечено) Заменяем все что нужно sed -i 's/NONAMES/MyName/g' meta.xml Затем, мы приводим завершающие действия. Запаковываем все обратно, в два этапа, для правильной структуры нового файла 1: cd folder zip -0 -X file.odt mimetype 2: zip -r file.odt * -x mimetype После этого файл открывается без ошибки и если открыть меню Файл-Свойства, мы увидим того автора,которого внесли. Осталось проверить как это все работает именами файлов содержащие пробелы. p.s. если @Qwertiy возражает, то могу все это передать ему в ответ.

Ответ 2



Odt-файл - это zip-архив. Надо его распаковать как zip-архив, найти, в каком месте там находится имя пользователя, поменять и упаковать обратно. Аналогично с docx (но не doc). PS: Делал так с vsdx.

среда, 13 марта 2019 г.

python3. Как открыть(получить данные) офисные документы (doc,odt, etc…)

Подскажите, как в python3 открыть и получить данные из офисных файлов, таких как odt, doc, docx, rtf. Хотя бы odt.
То что odt и docx это по сути архивы в курсе, можно их по идее распаковать, и посмотреть на файл content.xml (если не ошибаюсь), но может есть более современные или удобные способы.
Все что нашел, это для создания таблиц ods.
Нашел модули uno, pyoo и везде описано как создать таблицы, а как получить данные из офисных документов не нашел.
Задача пробежаться по всем существующим в каталоге(подкаталогах) файлах, найти или проанализировать нужное и вывести результат в отдельный файл.
Сейчас подобное частично реализовано на bash'e, хочу переписать все на python3.
Подскажите или покажите как искать.


Ответ

Оформлю как ответ, чтоб в комментариях не рыскать, если tutankhamun не против, если против, то в свой ответ добавьте и я свой удалю.
И так, вопрос получилось решить с помощью модуля ezodf ( не много документации его ). При установке будьте внимательны, если у вас и 2 и 3 версии python, для третьей я ставил так python3 setup.py install
Небольшой пример кода, для наглядности
import ezodf odt = ezodf.opendoc('/home/user/python/text.odt') list=[] # Запускаем цикл for и перебираем все что нашли в файле) for i in odt.body: if i.text == None: print('no') else: list.extend(re.findall(r"[\w']+", i.text.lower()))
Поясню, использовал i.text заместо i.plaintext(), для ловли нескольких строк со значением None (видимо какие то служебные данные, не разбирался), просто plaintext() добавляет пустые элементы в список и мне на тот момент показалось,Что через text будет быстрее, но утром могу переосмыслить)
а тут list.extend(re.findall(r"[\w']+", i.text.lower())) - с существующему списку list присоединяю или даже так, этим расширяя существующий список list. Выбираю все слова регулярным выражением (каждое слово из документа в список), применяю к ним нижний регистр и все.
так это только кусок, потому может смотреться не очень, и многое что можно добавить, но по крайней мере теперь понятно как читать документы.
Спасибо tutankhamun за подсказки.

четверг, 10 января 2019 г.

Массовая смена автора документа

Подскажите как быть)
Предыстория:
У друга на работе уволился админ и на компе, буха, юрика и самого директора, изменил пользователя на Х%Й Булыжников или Пися Камушкин - не суть) Но обнаружили это через неделю или две, когда открыли документы doc, odt,xsl и прочие офисные, нажали файл - Свойства и там увидели сие чудо) а файлы они эти куда-то шлют и там через эту процедуру, даты сверяют в случае чего,)
Как можно массово такие офисные файлы перевладеть (сменить или убрать автора)?)
Руками долго (создать новый док, перекинуть все в него и сохранить - их там сотни документов) естественно, теперь Пользователь нормальный, но документы некоторые остались с пасхалкой)))
Подскажите, как под linux или windows можно автоматически поменять.
Думаю что скриптом можно, но не пойму как работать с api или самой libreOffice из консоли
Спасибо...
p.s. как выяснилось - админа очень обидели... и потом поняли что не правы, но было поздно)
Конвертировать в другой формат, в надежде смены автора так же безсмысленно
libreoffice -env:UserInstallation=file:///home/firefedot/.config/libreoffice-alt --headless --convert-to odt *.doc
В итоге остался тот же автор создания документа и те же авторы изменений.


Ответ

Спасибо @Qwertiy за подсказку.
В общем пока что вариант такой нашел. Сначала приводим все нужные файлы к типу odt, таким образом
libreoffice -env:UserInstallation=file:///home/firefedot/.config/libreoffice-alt --headless --convert-to odt *.doc
Затем можно скриптом, а можно и руками, делаем так. Распаковывем наш файл ODT в папку
unzip file.odt -d folder
После этого ищем и заменяем нужного/ненужного автора
grep NONAMES meta.xml --color # Или если не знаем имени, то grep creator meta.xml --color
И мы увидим нужное нам, оно будет подсвечено)
Заменяем все что нужно
sed -i 's/NONAMES/MyName/g' meta.xml
Затем, мы приводим завершающие действия. Запаковываем все обратно, в два этапа, для правильной структуры нового файла
1:
cd folder zip -0 -X file.odt mimetype
2:
zip -r file.odt * -x mimetype
После этого файл открывается без ошибки и если открыть меню Файл-Свойства, мы увидим того автора,которого внесли.
Осталось проверить как это все работает именами файлов содержащие пробелы.
p.s. если @Qwertiy возражает, то могу все это передать ему в ответ.