2017-03-10 2 views
1

Was ich brauche, ist ein Befehlszeilentool, Excel und ods Tabellendatei in CSV konvertieren, die ich auf einem Webserver (Ubuntu 16.04) verwenden kann. Ich habe das bereits rot: https://pypi.python.org/pypi/unotools was für die angegebenen Beispiele gut funktioniert.unotools - versuchen, ods oder Excel-Dateien zu konvertieren csv mit Python

Und das: http://www.linuxjournal.com/content/convert-spreadsheets-csv-files-python-and-pyuno-part-1v2 was sollte die Arbeit tun, ich will es tun, aber nicht in meiner Umgebung.

Mein Problem ist meiner Meinung nach in der Methode Calc.store_to_url:

Linie werfen Ausnahme

component.store_to_url (url, 'Filtername', 'Text - txt - csv (StarCalc)')

Ich würde wirklich einen Hinweis schätzen.

Exception

unotools.unohelper.ErrorCodeIOException: SfxBaseModel :: impl_store fehlgeschlagen: 0x81a

Full Source

import sys 
from os.path import basename, join as pathjoin, splitext 

from unotools import Socket, connect 
from unotools.component.calc import Calc 
from unotools.unohelper import convert_path_to_url 
from unotools import parse_argument 



def get_component(args, context): 
    _, ext = splitext(args.file_) 
    url = convert_path_to_url(args.file_) 
    component = Calc(context, url) 
    return component 

def convert_csv(args, context): 
    component = get_component(args, context) 
    url = 'out/result.csv'  
    component.store_to_url(url,'FilterName','Text - txt - csv (StarCalc)') 
    component.close(True) 


args = parse_argument(sys.argv[1:]) 
context = connect(Socket(args.host, args.port), option=args.option) 

convert_csv(args, context) 
+0

Welche Parameter übergeben Sie an die 'convert_csv()'? –

+1

full command ist: python3 convert.py -s localhost -p 2002 -f excel.xlsx (host und port sind geprüft und geht es gut) –

+0

Diese Frage verwendet 'unotools' anstatt gerade' pyuno', also der Titel und das Tag sind irreführend. Das Problem ist jedoch für jeden Code relevant, der die UNO-Schnittstelle verwendet. –

Antwort

1

Die URL in file:// Format sein muss.

url = convert_path_to_url('out/result.csv') 

Siehe store_to_url Beispiel bei https://pypi.python.org/pypi/unotools.

EDIT:

den absoluten Pfad zu verwenden, wählen Sie eine von ihnen; Es besteht keine Notwendigkeit, sie zu kombinieren.

url = 'file:///home/me/out/result.csv' 
url = convert_path_to_url('/home/me/out/result.csv') 

den relativen Pfad zu verwenden, zuerst überprüfen, dass das Arbeitsverzeichnis ‚/ home/me‘ durch den Aufruf os.getcwd() ist.

+0

Vielen Dank. Das funktioniert gut, aber ich musste den absoluten Pfad verwenden wie: convert_path_to_url ('file: ///home/me/out/result.csv') –

Verwandte Themen