2016-07-07 14 views
1

https://github.com/SheetJS/js-xlsxを使用して、配列データをファイルに書き出しようとしています。js-xlsxで書き込むと "_fs is undefined"エラー

私は例を取って、ここにjsfiddleを置く:https://jsfiddle.net/connyake/y8a9nb7r/

がrequirejsせずにこれを実行することも可能ですか?そうなら、どうですか?

HTML:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.min.js"></script> 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.8.0/xlsx.core.min.js"></script> 
<button onclick="arrayToXlsx()">Export</button> 

JS:

function arrayToXlsx() { 
    /* original data */ 
    var data = [[1,2,3],[true, false, null, "sheetjs"],["foo","bar","0.3"], ["baz", null, "qux"]]; 
    var ws_name = "SheetJS"; 

    /* set up workbook objects -- some of these will not be required in the future */ 
    var wb = {}; 
    wb.Sheets = {}; 
    wb.Props = {}; 
    wb.SSF = {}; 
    wb.SheetNames = []; 

    /* create worksheet: */ 
    var ws = {}; 

    /* the range object is used to keep track of the range of the sheet */ 
    var range = {s: {c:0, r:0}, e: {c:0, r:0 }}; 

    /* Iterate through each element in the structure */ 
    for(var R = 0; R !== data.length; ++R) { 
     if(range.e.r < R) range.e.r = R; 
     for(var C = 0; C !== data[R].length; ++C) { 
     if(range.e.c < C) range.e.c = C; 

     /* create cell object: .v is the actual data */ 
     var cell = { v: data[R][C] }; 
     if(cell.v === null) continue; 

     /* create the correct cell reference */ 
     var cell_ref = XLSX.utils.encode_cell({c:C,r:R}); 

     /* determine the cell type */ 
     if(typeof cell.v === 'number') cell.t = 'n'; 
     else if(typeof cell.v === 'boolean') cell.t = 'b'; 
     else cell.t = 's'; 

     /* add to structure */ 
     ws[cell_ref] = cell; 
     } 
    } 
    ws['!ref'] = XLSX.utils.encode_range(range); 

    /* add worksheet to workbook */ 
    wb.SheetNames.push(ws_name); 
    wb.Sheets[ws_name] = ws; 

    /* write file */ 
    XLSX.writeFile(wb, 'test.xlsx'); 
}; 

答えて

1

xlsxライブラリはファイルwritewriteFileに書き込むための2つの機能があります。 writeFileの式はノードfsモジュールを実装しており、ノード環境内で使用することを目的としています。代わりにwriteはクライアント側のjavascriptを使用して実装されているため、状況に応じて使い分けることができます。すなわち: write(wb, {bookType: 'xlsx' , bookSST: false, type: 'binary'});

関連する問題