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

Posted

技术标签:

【中文标题】unotools - 尝试使用 python 将 ods 或 excel 文件转换为 csv【英文标题】:unotools - try to convert ods or excel files to csv using python 【发布时间】:2017-03-10 14:55:13 【问题描述】:

我需要一个命令行工具,用于将 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 failed: 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)

【问题讨论】:

您将哪些参数传递给convert_csv() 完整命令为:python3 convert.py -s localhost -p 2002 -f excel.xlsx (主机和端口检查正常) 本题使用unotools而不是直接pyuno,所以标题和标签有误导性。但是,该问题与使用 UNO 接口的任何代码有关。 【参考方案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')

要使用相对路径,首先通过调用os.getcwd() 验证工作目录是否为“/home/me”。

【讨论】:

非常感谢。效果很好,但我必须使用绝对路径,例如: convert_path_to_url('file:///home/me/out/result.csv')

以上是关于unotools - 尝试使用 python 将 ods 或 excel 文件转换为 csv的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用python将数据插入sql数据库

nmake 错误(尝试将 Python 与 WAMP 一起使用)

尝试使用 python 将元素添加到现有 JSON

尝试使用pyodbc将python连接到Access数据库时出错[重复]

如何将复数从 python numpy 传递给 c(目前正在尝试使用 SWIG)

尝试将日期作为python中的输入并使用mysql连接器更新mysql表中的值