netanelgilad / meteor-excel

MIT License
56 stars 17 forks source link

meteor-excel

Mainly this package is a wrap for the npm packages listed below. So checkout their documentation to see how to work with excel files properly.

Parsing and generating excel files (xlsx, xls).

This package uses the npm packages:

Getting Started

There is nothing like a good example to get started with this package. Check out this MeteorPad for an exportable leaderboard to excel file. Follow the comments in the meteorpad, mainly in the server/app.js file.

Three steps to use it (basic cover)

1.- GET YOU APP PATH..

var fs = Npm.require('fs');
var path = Npm.require('path');
var basepath = path.resolve('.').split('.meteor')[0];

2.- CREATE A NEW EXCEL OBJECT

This package exports the Excel object to the server. Meaning this package is currently available only to the server side.

To work with excel files first create an Excel object matching the excel file type you want to handle: xlsx/xls. To do that just use:

var excel = new Excel('xls');

or

var excel = new Excel('xlsx');

3.- READING XLS/X

var workbook = excel.readFile( basepath+'yourFilesFoler/someExcelFile.xls'); 
var yourSheetsName = workbook.SheetNames;
console.log("Get the 1st Sheet Name (remember is an array): " + workbook.SheetNames[0]);
console.log("Get Some Cell from it: " + workbook.Sheets[yourSheetsName[0]][
'C37'].v);
// We want JSON for this sheet:
var sheet = workbook.Sheets[yourSheetsName[0]]

// You can get the sheet as list of lists.
var options = { header : 1 }

// Or you  can get an object with column headers as keys.  
var options = { header : ['title', 'fName', 'sName' ,'address' ] }

// If options is empty or omitted, it should use the first-row headers by default. 
// However this doesn't seem to work with all Excel worksheets. 
var options = {}

// Generate the JSON like so:
var workbookJson = excel.utils.sheet_to_json( sheet, options );
var workbookCsv = excel.utils.sheet_to_csv(workbook.Sheets[yourSheetsName[0]]);
console.log(workbookCsv.length);

Contribute

Used this package? got an example to show? conact me or PR the README and i'll happly add it :)