unotools - 尝试使用python将ods或excel文件转换为csv

时间:2017-03-10 14:55:14

标签: python libreoffice headless uno pyuno

我需要的是一个命令行工具,可以将excel和ods电子表格文件转换为csv,我可以在Web服务器上使用它(Ubuntu 16.04)。 我已经红了这个:https://pypi.python.org/pypi/unotools 这适用于给定的例子。

而这:http://www.linuxjournal.com/content/convert-spreadsheets-csv-files-python-and-pyuno-part-1v2 应该做我想做的工作,但不在我的环境中。

我认为我的问题在方法Calc.store_to_url:

投掷线异常

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

我真的很感激提示。

异常

unotools.unohelper.ErrorCodeIOException:SfxBaseModel :: impl_store失败:0x81a

完整来源

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)

1 个答案:

答案 0 :(得分:1)

网址必须为file://格式。

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

请参阅https://pypi.python.org/pypi/unotools上的store_to_url示例。

修改

要使用绝对路径,请选择其中一个;没有必要将它们结合起来。

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

要使用相对路径,请首先验证工作目录是' / home / me'致电os.getcwd()