[问题] 如何转换ctype array至Python List

楼主: fredchou (恶棍)   2016-11-10 14:13:01
在下有一个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
作者: uranusjr (←這人是超級笨蛋)   2016-11-12 14:44:00
没有内建方法,只能自己转

Links booklink

Contact Us: admin [ a t ] ucptt.com