[問題] 如何轉換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