< 戻る 【 Calc 】
値を配列に格納することで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')