def StartCOMServer(clsid): if not IsProcessAlreadyRunning('aicells-server.py'): sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) xlwings.serve(clsid=clsid) else: print('aicells-server.py is already running!')
["%s x %s : %s, %s" % (n, m, i, j) for j in range(m)] for i in range(n) ] @xw.func def simple(x): print('3 - CALLED SIMPLE FUNCTION') return x @xw.func(async_mode='threading') def simple_threading(x): print('4 - CALLED SIMPLE THREADING FUNCTION') time.sleep(1) return x @xw.func(async_mode='threading') @xw.arg("i", numbers=int) @xw.arg("j", numbers=int) @xw.ret(expand='table') def numpy_async(i, j): print('5 - CALLED NUMPY ASYNC FUNCTION') time.sleep(1) return np.arange(i * j).reshape((i, j)) if __name__ == '__main__': xw.serve()
@xw.func def read_workbook_caller(): wb = xw.Workbook.caller() return xw.Range('E277').value == 1. @xw.func def default_args(x, y="hello", z=20): return 2 * x + 3 * len(y) + 7 * z @xw.func def variable_args(x, *z): return 2 * x + 3 * len(z) + 7 * z[0] @xw.func def optional_args(x, y=None): if y is None: y = 10 return x * y @xw.func def write_none(): return None if __name__ == "__main__": xw.serve()
def main(): # To run this with the debug server, set UDF_DEBUG_SERVER = True in the xlwings VBA module xw.serve()