web-dev-qa-db-ja.com

NodeのサーバーでXLSをCSVに変換します

クライアント側のWebアプリケーションがあり、クライアントがアクセスできないデータにアクセスするための最小限のノードサーバーがあります。これらの1つは、拡張子が.xlsのExcelスプレッドシートです。

サーバーを設定して、xlsをダウンロードし、csvに変換してから、クライアントに送信しようとしています。ダウンロードの部分は完了しましたが、「差し戻し」の部分は理解できますが、一生、xlsからcsvに変換するための適切なライブラリを見つけることはできません。

誰かが簡単な方法でそれを行うことができるライブラリを私に指摘できますか? Excelファイルは1枚のシートであり、複雑なワークブックなどはありません。

それとも、私が考えていない別の方法がありますか?

13
fnsjdnfksjdb

私が知っているライブラリはありませんが、 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!");
});
21
heinst

このパッケージを使用してXLSXをCSVに変換しています: https://www.npmjs.com/package/xlsx

XLSX = require('xlsx');

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