Notoriously Punctual Manatee


    0.0.3 • Public • Published


    node-win32ole - Windows COM bindings for node.js

    win32ole makes accessibility from node.js to Excel, Word, Access, Outlook, InternetExplorer, WSH ( ActiveXObject / COM ) and so on. It does not need TypeLibrary.


    Install with npm install win32ole.

    It works as... (version 0.1.x)

      var win32ole = require('win32ole');
      // var xl = new ActiveXObject('Excel.Application'); // You may write it as:
      var xl = win32ole.client.Dispatch('Excel.Application');
      xl.Visible = true;
      var book = xl.Workbooks.Add();
      var sheet = book.Worksheets(1);
        sheet.Name = 'sheetnameA utf8';
        sheet.Cells(1, 2).Value = 'test utf8';
        var rg = sheet.Range(sheet.Cells(2, 2), sheet.Cells(4, 4));
        rg.RowHeight = 5.18;
        rg.ColumnWidth = 0.58;
        rg.Interior.ColorIndex = 6; // Yellow
        var result = book.SaveAs('testfileutf8.xls');
        console.log('(exception cached)\n' + e);
      xl.ScreenUpdating = true;
      console.log('*** exception cached ***\n' + e);

    There are 3 ways to make force Garbage Collection for node.js / v8 .

      1. use huge memory to run GC automatically ( causes abnormal termination )
      1. win32ole.force_gc_extension(1);
      1. win32ole.force_gc_internal(1);

    see also examples/ole_args_test_client.js

    Tutorial and Examples

    Other built in functions

    • win32ole.version(void) // returns version string
    • win32ole.printACP(utf8string) // Utf8 to .ACP
    • win32ole.print(utf8string) // ASCII
    • win32ole.gettimeofday(struct timeval &tv, null) // now arg2 is not used
    • win32ole.sleep(long milliseconds, bool withmessage=false, bool with\n=false)
    • win32ole.force_gc_extension(long flag) // now flag is dummy
    • win32ole.force_gc_internal(long flag, string) // now flag is dummy


    • fix BUG: date
    • BUG: A few samples in win32ole@0.1.0 needs '._' ideom.
    • When you use unary operator '!' at the place that needs boolean CONDITION (for example 'while(!obj.status){...}') , you must write 'while(!obj.status._){...}' to complete v8::Object::ToBoolean() conversion. (NamedPropertyHandler will not be called because v8::Object::ToBoolean() is called directly for unary operator '!' instead of v8::Object::valueOf() in ParseUnaryExpression() v8/src/ .) Do you know how to fake it?
    • V8Variant::OLEGetAttr returns a copy of object, so it uses much memory. I want to fix it.
    • Now '._' ideom is obsoleted.
    • Remove 'node-proxy' from dependencies list.
    • Change default branch to dev0.1.0 .
    • BUG: Some samples in between win32ole@0.0.25 and win32ole@0.0.28 ( examples/maze_creator.js examples/maze_solver.js ) uses huge memory and many disposers will run by v8 GC when maze size is 20*30. I think that each encapsulated V8Variant (by node-proxy) may be big object. So I will try to use v8 accessor handlers ( SetCallAsFunctionHandler / SetNamedPropertyHandler / SetIndexedPropertyHandler ) instead of ( 'noSuchMethod' / 'noSuchGetter' / 'noSuchSetter' ) by node-proxy.
    • So much implements. (can not handle some COM VARIANT types, array etc.)
    • Bug fix. (throws exception when failed to Invoke(), and many test message.)
    • Implement accessors getter, setter and caller. (version 0.1.x) (Some V8Variants were advanced to 0.1.x .)


    See the API documentation in the wiki.


    This project uses VC++ 2008 Express (or later) and Python 2.6 (or later) . (When using Python 2.5, it needs multiprocessing 2.5 back port .) It needs neither ATL nor MFC.

    Bulding also requires node-gyp to be installed. You can do this with npm:

    npm install -g node-gyp

    To obtain and build the bindings:

    git clone git://
    cd node-win32ole
    node-gyp configure
    node-gyp build

    You can also use npm to download and install them:

    npm install win32ole


    mocha is required to run unit tests.

    npm install -g mocha
    nmake /a test



    Inspired Win32OLE


    node-win32ole is BSD licensed.


    npm i @ctsy/win32ole

    DownloadsWeekly Downloads






    Unpacked Size

    123 kB

    Total Files


    Last publish


    • ida_xyt
    • yanpengquan