我正在尝试从python打开一个excel文件,让它重新计算,然后用新计算的值保存它。
电子表格很大,在LibreOffice中用GUI打开得很好,最初显示的是旧值。如果我然后做一个数据->计算->重新计算,我会看到正确的值,我当然可以保存,一切看起来都很好。但是,有多个大的电子表格我想做它,所以我不想使用GUI,而是我想使用Python。下面的所有操作似乎都可以创建一个新的电子表格,但它没有新的值(除非我再次手动地重新计算)
我在Linux上运行。首先我要这样做:
soffice --headless --nologo --nofirststartwizard --accept="socket,host=0.0.0.0,port=8100,tcpNoDelay=1;urp"
import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager")
remoteContext = context.getPropertyValue("DefaultContext")
desktop = context.createInstanceWithContext("com.sun.star.frame.Desktop", remoteContext)
document = desktop.getCurrentComponent()
file_url="file://foo.xlsx"
document = desktop.loadComponentFromURL(file_url, "_blank", 0, ())
controller=document.getCurrentController()
sheet=document.getSheets().getByIndex(0)
controller.setActiveSheet(sheet)
document.calculateAll()
file__out_url="file://foo_out.xlsx"
from com.sun.star.beans import PropertyValue
pv_filtername = PropertyValue()
pv_filtername.Name = "FilterName"
pv_filtername.Value = "Calc MS Excel 2007 XML"
document.storeAsURL(file__out_url, (pv_filtername,))
document.dispose()
从本质上说,我想从python做的是:打开、硬重新计算、保存
这似乎是LibreOffice旧版本的问题。我在Linux上使用5.0.6.2,即使重新计算,当我直接提取单元格值时,新的值甚至没有显示出来。但是,我升级到6.2,使用了相同的代码和相同的输入文件,问题就消失了。
我决定只回答我自己的问题,而不是删除它,因为这会导致一个挫折,直到我解决了它。
我在LibreOffice的许多工作表上有大量的数据--一个列和一个列--我想计算每个地址出现的次数,放入列中。例如:
问题内容: 我有一个SocketServer接受传入的连接。出于安全原因,我只应允许本地连接(来自运行服务器的计算机的连接)。 如何确定传入连接是否来自另一台计算机?以下代码是否对此安全? 而方法是这样的: 谢谢,莫森 问题答案: 如果要限制来自本地主机的连接,请在打开ServerSocket时指定该连接。如果仅侦听localhost,则只能从localhost获得连接。
问题内容: 我怀疑这与字节序有关,但我不确定如何解决。我有一个C ++客户端,它告诉Java服务器它将要发送多少字节,而Java服务器仅在输入流上调用readInt()。然后,服务器继续读取其余数据。 目前,如果C ++服务器调用: 然后对应的Java端是: Bytes lBytesSent往往是一个巨大的值,然后在创建数组时就会抛出异常(不足为奇) 只需使用以下命令打开C ++套接字: 而Jav
我正在尝试创建一个检查整数的函数,并将继续循环,直到用户正确输入17或更高的整数。但是,如果我输入错误的输入,例如“K”或“
问题内容: 让我开始向您展示如何在SCSS中执行此操作: 可以编译为: 基本上,SCSS允许我将减号与变量连接起来,以便将其转换为负值。 是否可以使用CSS变量来实现? 问题答案: 是的,你可以做到。只需乘以: