OpenOffice как средство распечатки отчётов из скриптов python

OpenOffice имеет привязку к python, что позвляет нам пользоваться возможностями OOo из наших скриптов

Причём архитектура OOo позволяет создавать интересные схемы, например:

На удалённом компьютере, собирающем данные, запущен OOoWriter, а с других компьютеров к нему подключаются скрипты и выводят в него данные.
Для этого необходимо, чтобы OpenOffice быз запущен с разрешением на подключение извне, вот так:

soffice "-accept=socket,host=ffadmin.archiv,port=2002;urp;" -write

Эта команда запустит OOo с открытым сокетом на ffadmin.archiv:2002 и откроет пустой документ.
На другом компьютере пишем следующий скрипт:

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
sys.path.append('/usr/lib/openoffice/program')
import os
import uno
def print_to_ooo(path,ext):
        localContext = uno.getComponentContext()
        resolver = localContext.ServiceManager.createInstanceWithContext(
    "com.sun.star.bridge.UnoUrlResolver", localContext)
        ctx = resolver.resolve("uno:socket,host=ffadmin.archiv,port=2002;urp;StarOffice.ComponentContext")
        smgr = ctx.ServiceManager
        desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop",ctx)
        model = desktop.getCurrentComponent()
        text = model.Text
        cursor = text.createTextCursor()
        for files in os.walk(path):
                text.insertString(cursor, "%s\n"%files[0], 0)
                for f in files[2]:
                        extens=f.split(".")[-1]
                        if extens in ext:
                                text.insertString(cursor, "\t%s\t%s"%(extens,f), 0)
if len(sys.argv)>2:
        print_to_ooo(sys.argv[1],sys.argv[1:])

python_print_to_OOo.py

В этом скрипте, объявленна функция которая подключается к OOo  по заданному адресу и пишет в открытом документе список файлов и папок заданных при запуске скрипта:

./oocalc.py /media/bsd/sdb5/distr/unix/FreeBSD/distfiles/ bz2 zip tgz gz

обратите внимание на вызов скрипта: количество расширений имён файлов ограченно только системными настройками

Начинающим питонёрам возможно будет интересна конструкции

sys.argv[1:] - так функции передаётся список строк состояший из  от 2 до последнего элемента списка аргументов вызова скрипта sys.argv

if ext in extens:
        text.insertString(cursor, "\t%s\t%s"%(extens,f), 0)

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

ext=f.split(".")[-1] - а вот так, строка разбирает на список слов разделённых символом "." и из этого списка выбирается последний элемент - расширение имени файла

 

похожие страницы

  1. Настройка проверки орфографии в OpenOffice3
  2. pytђon головного мозга
  3. SoftMaker2008 или OpenOffice3.1
  4. Python: strip split join
  5. python: try except else, кто бы мог подумать

#1:

спасибо, друже. Очень нужный материал.

ответить  2010-06-24 14:38:57