作者fredchou (恶棍)
看板Python
标题[问题] 如何转换ctype array至Python List
时间Thu Nov 10 14:13:01 2016
在下有一个Libreoffice的Python巨集问题,
由於ctypes的阵列似乎无法直接张贴在储存格上,
因此想请教列位高手,有什麽办法可以将ctypes array 转成 list?
由於将来阵列将会来自动态连结.so档或.dll档,
而且会非常庞大,以回圈逐一贴上储存格会很耗时,
因此在此请教大家,不胜感激!
请详简化的Code:
import uno
from ctypes import *
from com.sun.star.table.CellContentType import TEXT, EMPTY, VALUE, FORMULA
def test(*arg):
#新增一个ctypes 2x2阵列
c_arr = ((c_double * 2)*2)()
c_arr[0][0] = 1.5
c_arr[0][1] = 2.5
c_arr[1][0] = 3.5
c_arr[1][1] = 4.5
#新增一个2x2 Python List
p_lst = [[0 for x in range(2)] for y in range(2)]
p_lst[0][0] = 1.1
p_lst[0][1] = 2.2
p_lst[1][0] = 3.3
p_lst[1][1] = 4.4
#以下为指定当前工作表档案以及工作表
desktop = XSCRIPTCONTEXT.getDesktop()
model = desktop.getCurrentComponent()
sheet = model.Sheets.getByName("Sheet1")
#以下这行直接在储存格贴上ctypes二维阵列会出错,先注解处理。
#sheet.getCellRangeByName("A1:B2").Data = c_arr
#以下这行直接在储存格贴上Python List,成功。
sheet.getCellRangeByName("A1:B2").Data = p_lst
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.141.14.88
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1478758383.A.BAD.html
1F:→ uranusjr: 没有内建方法,只能自己转 11/12 14:44