Home of site/Python Macro for Calc

Macroの杜(Python編)

< 戻る 【 Calc 】

CCB-)[Calc]Cellの値を高速取得
【Picture】実行結果

値を配列に格納することでA1~C1048576 のデータを
高速で取得するコード。

Basicの同じコードよりも高速化が可能

処置時間(実測値)は
 Python : 1~2[sec]
 JavaScript : 3~4[sec]
 LO Basic : 7~8[sec]
 LO上のVBAコード : 38~39[sec]

#!
#coding: utf-8
# python Marco
import uno
import sys
import traceback
from com.sun.star.awt.MessageBoxType import MESSAGEBOX
import datetime

#
def omsgbox(oMessage='',oBtnType=1,oTitle='Title'):
		desktop = XSCRIPTCONTEXT.getDesktop()
		frame = desktop.getCurrentFrame()
		window = frame.getContainerWindow()
		toolkit = window.getToolkit()
		msgbox = toolkit.createMessageBox(window, MESSAGEBOX, oBtnType, oTitle, oMessage)
		return msgbox.execute()
def oHello():
    try:
        oNow = datetime.datetime.today()
        oSTime = oNow.hour * 60*60 + oNow.minute *60 + oNow.second
        oDoc = XSCRIPTCONTEXT.getDocument()
        oSheet =oDoc.getSheets().getByIndex(0)
        oRange = oSheet.getCellRangeByPosition(0, 0, 2, 1048575)
        oDataArry = oRange.getDataArray()
        my_list = list(oDataArry)
        oDisp = str(my_list[0]) + '\n' + str(my_list[1048575]) + '\n\n' + u'Exec Time = '
        oNow = datetime.datetime.today()
        oETime = oNow.hour * 60*60 + oNow.minute *60 + oNow.second
        oTime = oETime - oSTime
        oDisp = oDisp + str(oTime) + ' [sec]'
    except Exception as er:
        oDisp = ''
        oDisp = str(traceback.format_exc()) + '\n' + str(er)
    finally:
        omsgbox(oDisp,1,'LO7.5.2.2')
inserted by FC2 system