2017-06-21 118 views
0

我想導出格式化的Excel文件使用ExcelJS和writeFile方法根本無法正常工作。我得到以下異常,當我調用該函數:ExcelJS寫入文件不工作:未捕獲TypeError:fs.​​createWriteStream不是一個函數

Uncaught TypeError: fs.createWriteStream is not a function

我的JavaScript使用browserify.js捆綁。下面是我的源代碼:

的index.html

<!DOCTYPE html> 
<head> 
    <title>Test Excel JS</title> 
    <meta charset="utf-8"> 
    <meta name="description" content=""> 

    <link rel="stylesheet" href="app.css"> 
</head> 
<body> 
    <div> 
    <label>Test</label> 
    <button onclick="test()">Test this Stuff and Check your console log</button> 
    </div> 

    <script src="bundle.js"></script> 
    <script> 
     var test = function(){ 
      writeFile(); 
     }; 
    </script> 
</body> 
</html> 

app.js(由browserify捆綁到bundle.js)

'use strict'; 

global.Excel = require('../node_modules/exceljs/dist/es5/exceljs.browser'); 

global.isRowBold = function(excelRow){ 
    return excelRow.getCell('name').value === "Jeff"; 
}; 

global.getRowColor = function(excelRow){ 
    return excelRow.getCell('color').value; 
}; 

global.getCellColor = function(excelRow, cell){ 
    return (excelRow.getCell('name').value === 'John' && cell.value === 0)? 'orange' : excelRow.getCell('color').value; 
}; 

global.getFont = function(isBold, color){ 
    return { 
     name: 'Arial Black', 
     color: color, 
     family: 2, 
     size: 14, 
     bold: isBold 
    }; 
}; 

global.getTestHeader = function(){ 
    return [ 
     {key: "id", header: "Id"}, 
     {key: "name", header: "Name", width: 32}, 
     {key: "color", header: "Color", width: 10} 
    ]; 
}; 

global.getTestData = function(){ 
    return [ 
     { 
      id: 0, 
      name: "John", 
      color: "green" 
     }, 
     { 
      id: 1, 
      name: "Rehan", 
      color: "blue" 
     }, 
     { 
      id: 2, 
      name: "Jeff", 
      color: "yellow" 
     } 
    ]; 
}; 

global.generateTestFile = function(){ 
    var workbook = new Excel.Workbook(); 

    workbook.creator = "Generated"; 
    workbook.lastModifiedBy = "Generated"; 
    workbook.created = new Date(); 
    workbook.modified = new Date(); 

    var worksheet = workbook.addWorksheet('Sheet 1'); 

    //Set Column Headers 
    worksheet.columns = getTestHeader(); 

    //Add Rows 
    var testData = getTestData(); 
    var length = testData.length; 
    for(var i = 0; i < length; i++){ 
     worksheet.addRow(testData[i]); 
    } 

    //Format Rows 
    worksheet.eachRow(function(row, rowNumber){ 
     var isBold = isRowBold(row); 
     row.eachCell(function(cell, colNumber){ 
      var cellColor = getCellColor(row, cell); 
      cell.font = getFont(isBold, cellColor); 
     }); 
    }); 

    //workbook.commit(); 
    return workbook; 
}; 

global.writeFile = function(){ 
    var workbook = generateTestFile(); 
    workbook.xlsx.writeFile('./output/newtestfile.xlsx') 
     .then(function() { 
      console.log('Done Writing file'); 
     }); 
}; 
+0

您無法瀏覽依賴於服務器端功能的模塊(如讀取或寫入文件系統)。 – robertklep

回答

0

fs.createWriteStream是意味着要對Node.js的使用方法(服務器)。這些類型的方法在瀏覽器(客戶端)上不可用。

相關問題