python-3.x - 如何合并单元格而不丢失 libreoffice-calc 中的数据?
问题描述
启动 libreoffice-calc:
soffice --calc --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
启动 python shell 将数据写入calc
:
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
svcmgr = context.ServiceManager
desktop = svcmgr.createInstanceWithContext("com.sun.star.frame.Desktop", context)
oDoc = desktop.loadComponentFromURL( "private:factory/scalc","_blank", 0, () )
oSheet = oDoc.getSheets().getByIndex(0)
oRange = oSheet.getCellRangeByName("A1:C3")
将数据写入oRange
.
oRange.setDataArray((('a1','a2','a3'),('b1','b2','b3'),('c1','c2','c3'),))
calc现在的外观:
我想合并所有数据oRange
并将其格式化为垂直和水平对齐。
我想要的编辑效果calc
。
oRange.merge()
oCell = oSheet.getCellByPosition(0, 0)
oCell.HoriJustify = 2
oCell.VertJustify = 2
合并数据与垂直和水平对齐,许多单元格中的先前数据b1-c1
和丢失。
真实的效果。
a2-c2
a3-c3
如何修复我的代码以获得预期的效果?
解决方案
import uno
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
svcmgr = context.ServiceManager
desktop = svcmgr.createInstanceWithContext("com.sun.star.frame.Desktop", context)
oDoc = desktop.loadComponentFromURL( "private:factory/scalc","_blank", 0, () )
oSheet = oDoc.getSheets().getByIndex(0)
oRange = oSheet.getCellRangeByName("A1:C3")
tup = (('a1','a2','a3'),('b1','b2','b3'),('c1','c2','c3'),)
oRange.setDataArray(tup)
target =''
for item in tup:
tmp = ' '.join(item)
target = target + tmp + ' '
target = target.strip()
oRange.merge(True)
oCell = oSheet.getCellByPosition(0, 0)
oCell.String = target
oCell.HoriJustify = 2
oCell.VertJustify = 2
推荐阅读
- django - Django 管理员用户可以从后端编辑 base.html 页面吗?
- c# - 是否可以将 groupitem 的 itemcount 添加到同一表单的其他地方的单独标签中?
- php - 通过添加新值来增加字段
- html - 功能检测高级浏览器多选控件(例如 iOS/Android 选择元素)
- c# - 用于查找值的 Dynamics 365 插件
- php - 在每个函数上调用 mysql 链接或通过它们传递链接?
- stanford-nlp - 否定用户定义的“宏”的 TokensRegex 模式
- c - 有没有办法更好地路由流程?
- python - 我怎么知道引发异常的确切命令?
- java - 如何使用 javax.ws.rs 在请求正文中传递数据的 post 端点?