在 Node 的服务器上将 XLS 转换为 CSV

Convert XLS to CSV on the server in Node

我有一个客户端 Web 应用程序,它有一个非常小的节点服务器来访问客户端无法访问的一些数据。其中之一是 excel 传播 sheet 扩展名为 .xls 的文件。

我正在尝试设置我的服务器以下载 xls,将其转换为 csv,然后将其发送回客户端。我已经完成了下载部分,我确信我可以弄清楚 "send back" 部分,但是我这辈子都找不到一个好的库来将 xls 转换为 csv。

谁能告诉我一个可以简单地做到这一点的图书馆? excel 文件只是一个 sheet,没有复杂的工作簿或任何东西。

或者还有其他我没有想到的方法吗?

据我所知没有库,但您可以使用 node-xlsx 来解析 excel 文件,获取行并自己制作 CSV。这是一个例子:

var xlsx = require('node-xlsx');
var fs = require('fs');
var obj = xlsx.parse(__dirname + '/test.xls'); // parses a file
var rows = [];
var writeStr = "";

//looping through all sheets
for(var i = 0; i < obj.length; i++)
{
    var sheet = obj[i];
    //loop through all rows in the sheet
    for(var j = 0; j < sheet['data'].length; j++)
    {
            //add the row to the rows array
            rows.push(sheet['data'][j]);
    }
}

//creates the csv string to write it to a file
for(var i = 0; i < rows.length; i++)
{
    writeStr += rows[i].join(",") + "\n";
}

//writes to a file, but you will presumably send the csv as a      
//response instead
fs.writeFile(__dirname + "/test.csv", writeStr, function(err) {
    if(err) {
        return console.log(err);
    }
    console.log("test.csv was saved in the current directory!");
});

我正在使用这个包将 XLSX 转换为 CSV: https://www.npmjs.com/package/xlsx

XLSX = require('xlsx');

const workBook = XLSX.readFile(inputFilename);
XLSX.writeFile(workBook, outputFilename, { bookType: "csv" });