Contact: zeng  @  zegraph.com      Last update: 5 September 2008

Excel Library

This library uses the DispHelper COM Helper Library to manipulate data in MS Excel worksheet through Excel's COM interface. The functions for accessing data are registered as __get and __set respectively so that array access expression, e.g., a = xls[i,j] or xls[i,j] = a, may be used to get and set values in cells of a worksheet.

Function Parameter Type Remark
excel([flag]) boolean Creates an Excel object. If the optional flag is set to true, errors may be shown in a message window (good for debugging).
.open(fname) string Opens an Excel file.
.visible(flag) boolean Makes Excel visible or invisible (default).
.close()   Closes the Excel program.
.save([fanme]) string Save Excel workbook; or save as another file if the optional fname is given.
.activate(index) integer Activates the specified worksheet.
.add([name]) string Adds one worksheet and renames it if the optional name is given.
.delete()   Deletes the active worksheet.
.__get(row, col) integers or arrays Gets the value in cell(row, col) in the active worksheet. Returns a real, a string, or a null depending on the content in the cell. If row and col are arrays, e.g., 1:10 and 5:30, it returns a pointer of double containing data in the range.
.__set(row, col, value) integer or array, integer or array, number or string or user Sets the value to cell(row, col) in the active worksheet. If row and col are arrays and value is a user object, it assumes the pointer of the user object points to exact number of double values.

Example

load("excel.dll", "matrix.dll");

xls = excel(true);
xls.open("e:\\Book1.xls");
xls.visible(true);
csv(xls[1,1]);
xls[1,1] = 100.0;
csv(xls[1,1]);
xls[1,1] = "Hi!";
csv(xls[1,1]);

ptr = xls[1:5,3:7];
d = double(5, 5);
d.import(ptr);
d.print();
d.fill(0, 1);
[ptr, n] = d.ptr();
xls[1:5,3:7] = ptr; 

xls.save();
xls.close();

// Because a dialog box may show up in closing Excel
// it is recommended to wait a while and then
// send the ENTER key to the foreground window.

sleep(1000);
sendkey("Enter");