如何使用python uno打开xls文件并保存为UTF-8格式的csv文件



使用python uno,我试图在LibreOffice中打开xls文件,然后将其保存为csv。我必须用LibreOffice来打开这些文件,因为它们已经损坏了。我不能简单地使用pandas打开它们,然后保存为csv =(

)这是我尝试过的:

在命令提示符中(Linux mint-Una):

/usr/lib/libreoffice/program/soffice.bin --headless --invisible --nocrashreport --nodefault --nofirststartwizard --nologo --norestore --accept='socket,host=localhost,port=2002,tcpNoDelay=1;urp;StarOffice.ComponentContext'

在这篇文章之后(使用Python使用Uno访问LibreOffice Calc),我写了以下Python脚本:

import uno
local_ctx = uno.getComponentContext()
smgr_local = local_ctx.ServiceManager
resolver = smgr_local.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local_ctx)
url = "uno:socket,host=localhost,port=2002,tcpNoDelay=1;urp;StarOffice.ComponentContext"
uno_ctx = resolver.resolve(url)
uno_smgr = uno_ctx.ServiceManager
desktop = uno_smgr.createInstanceWithContext("com.sun.star.frame.Desktop", uno_ctx )
PropertyValue = uno.getClass('com.sun.star.beans.PropertyValue')
inProps = PropertyValue( "Hidden" , 0 , True, 0 ), # this is a tuple
document = desktop.loadComponentFromURL("file:///home/miranda/Desktop/Crime_CSV/myfile.xls", "_blank", 0, inProps )
import os
path = os.path.abspath('./newfile.csv')
uno_url = uno.systemPathToFileUrl(path)
到目前为止,一切都很好,问题是当我试图将其保存为UTF-8 csv文件时。这是我尝试过的,基于这个论坛(https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=79147): )
Dim filter(2) as new com.sun.star.beans.PropertyValue
filter(0).Name = 'FilterName'
filter(0).Value = 'Text - txt - csv (StarCalc)'
filter(1).Name = "FilterOptions"
filter(1).Value = "44,34,76,1,,1031,true,true"
filters = (filter,)

我得到以下错误:

Dim filter(2) as new com.sun.star.beans.Property
        ^
SyntaxError: invalid syntax

如何同时保存为csv和UTF-8?

试着这样重写:

filter0 = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
filter0.Name = 'FilterName'
filter0.Value = 'Text - txt - csv (StarCalc)'
filter1 = uno.createUnoStruct('com.sun.star.beans.PropertyValue')
filter1.Name = "FilterOptions"
filter1.Value = "44,34,76,1,,1031,true,true"
filters = (filter0,filter1,)

最新更新