UNPKG

vuexcel-utils

Version:
70 lines (64 loc) 2.27 kB
import RequestContext = Excel.RequestContext; import SelectionChangedEventArgs = Excel.SelectionChangedEventArgs; import Workbook = Excel.Workbook; /** * 监听当前的格子变化,实时返回给handler * @param {function} handler - 回调 * */ let eventResult: any = null export function addMonitor(handler: Function): void { // 移除后添加 removeMonitor(function () { Excel.run(function (ctx: RequestContext) { eventResult = ctx.workbook.onSelectionChanged.add(function (event: SelectionChangedEventArgs) { return Excel.run(function (context: RequestContext) { let workbook: Workbook = context.workbook let selectedRange: Excel.Range = workbook.getSelectedRange() selectedRange.load('address') return context.sync() .then(function () { handler(null, selectedRange.address, eventResult) return context.sync() }) }) }) console.info('Event handler is running') return ctx.sync() // // 给targetAddress初始化 // let workbook: Workbook = ctx.workbook // let selectedRange: Excel.Range = workbook.getSelectedRange() // selectedRange.load('address') // return ctx.sync().then(function () { // handler(null, selectedRange.address, eventResult) // return ctx.sync() // }) }) .catch((e: Error) => { handler(e) }) }) } /** * @param {EventResult} eventResult - 事件对象 * @param {Function} handler - 回调函数 * */ export function removeMonitor(handler?: Function): void { if (eventResult && eventResult.context) { Excel.run(eventResult.context, function (context) { eventResult.remove(); return context.sync() .then(function () { handler() eventResult = null }) }).catch(e => { handler(e) }) } else { handler() } } export default { addMonitor, removeMonitor }