将Json转换为Xlsx文件

ish*_*kya 5 excel json file node.js

我试图将json数据转换为Xlsx文件并将其保存在文件夹中.我一直在尝试使用icg-json-to-xlsx模块,但到目前为止我一直无法使用它.我的代码看起来像这样:

jsonXlsx = require('icg-json-to-xlsx');

filename = path.join('./files', "output.xlsx");
outputFile = jsonXlsx(filename, result) //result contains json data
console.log(outputFile);
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误

outputFile = jsonXlsx(filename, result)
             ^
TypeError: Property 'jsonXlsx' of object # is not a function
Run Code Online (Sandbox Code Playgroud)

从mongodb获取数据:在路由中:

router.get('/', function(req, res, next) {
  fileController.getAll(function(err, result){
     if(err){
        res.send(500,err);
          }  
       // res.json(result);
        var data = result;
Run Code Online (Sandbox Code Playgroud)

在控制器中:

FileController.prototype.getAll = function(callback){

File.find( {}, {_id: false, id: true, name: true, status: true}, function(err, file){

    if(err) {
        return callback(err);
    } else {
        if (!file) {
            return callback('file not found');
        }
    }

    callback(null, file);
}
)};
Run Code Online (Sandbox Code Playgroud)

Ale*_* T. 1

尝试这个

  outputFile = jsonXlsx.writeFile(filename, result);
Run Code Online (Sandbox Code Playgroud)

jsonXlsx 是对象,其中包含 writeFile、writeBuffer 等方法,因此您不能将 jsonXlsx 作为函数调用...或者您需要添加对这样的函数的引用

jsonXlsxWriteFile = require('icg-json-to-xlsx').writeFile;  
outputFile        = jsonXlsxWriteFile(filename, result)
Run Code Online (Sandbox Code Playgroud)

例子

var jsonXlsx = require('icg-json-to-xlsx');
var path     = require('path');
var filename = path.join('./files', "output.xlsx");


var result = [ 
  { id: '1', name: 'test', status: '123' }, 
  { id: '2', name: 'david', status: '323'}, 
  { id: '3', name: 'ram', status: '2323' } 
];

var outputFile = jsonXlsx.writeFile(filename, JSON.stringify(result));

console.log(outputFile);
Run Code Online (Sandbox Code Playgroud)

更新

File
  .find({ })
  .select({
    _id: false, id: true, name: true, status: true
  })
  .lean()
  .exec(function(err, file) {
    //
  });
Run Code Online (Sandbox Code Playgroud)

在你的例子中,查询返回 MongooseDocuments,但jsonXlsx需要纯 JavaScript 对象,所以这就是你应该使用Lean()的原因