0.1.3 • Published 11 years ago

win32ole v0.1.3

Weekly downloads
22
License
-
Repository
github
Last release
11 years ago

NAME

node-win32ole - Asynchronous, non-blocking win32ole bindings for node.js powered by v8 engine .

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

USAGE

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
book.SaveAs('testfileutf8.xls');
xl.ScreenUpdating = true;
xl.Workbooks.Close();
xl.Quit();

But now it implements as... (version 0.0.x)

(Some V8Variants were advanced to 0.1.x .)

try{
  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);
  try{
    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(result);
  }catch(e){
    console.log('(exception cached)\n' + e);
  }
  xl.ScreenUpdating = true;
  xl.Workbooks._.Close(); // ***
  xl.Quit();
}catch(e){
  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

FEATURES

  • BUG: Some samples in win32ole@0.0.25 and win32ole@0.0.26 ( 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 .)

API

See the API documentation in the wiki.

BUILDING

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://github.com/idobatter/node-win32ole.git
cd node-win32ole
node-gyp configure
node-gyp build

You can also use npm to download and install them:

npm install win32ole

TESTS

mocha is required to run unit tests.

npm install -g mocha
nmake /a test

CONTRIBUTORS

ACKNOWLEDGEMENTS

Inspired Win32OLE

LICENSE

node-win32ole is BSD licensed.

0.1.3

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago

0.0.28

11 years ago

0.0.27

11 years ago

0.0.26

11 years ago