Ich bin ein NodeJS-Programmierer. Jetzt habe ich eine Datentabelle, die ich im Excel-Dateiformat speichern möchte. Wie mache ich das?
Ich habe ein paar Knotenbibliotheken gefunden. Aber die meisten von ihnen sind eher Excel-Parser als Excel-Writer. Ich verwende einen Linux-Server. Benötigen Sie daher etwas, das unter Linux ausgeführt werden kann. Bitte lassen Sie mich wissen, ob es hilfreiche Bibliotheken gibt, von denen Sie wissen.
Oder gibt es eine Möglichkeit, eine CSV-Datei (programmgesteuert) in eine XLS-Datei zu konvertieren?
Ich habe nur einen einfachen Ausweg gefunden. Das funktioniert -
Erstellen Sie einfach eine Datei mit Tabulatoren als Trennzeichen (ähnlich wie bei CSV, ersetzen Sie jedoch das Komma durch Tabulatoren). Speichern Sie es mit der Erweiterung .XLS. Die Datei kann in Excel geöffnet werden.
Ein Code zur Hilfe -
var fs = require('fs'); var writeStream = fs.createWriteStream("file.xls"); var header="Sl No"+"\t"+" Age"+"\t"+"Name"+"\n"; var row1 = "0"+"\t"+" 21"+"\t"+"Rob"+"\n"; var row2 = "1"+"\t"+" 22"+"\t"+"bob"+"\n"; writeStream.write(header); writeStream.write(row1); writeStream.write(row2); writeStream.close();
Dadurch wird die Datei im XLS-Dateiformat erstellt. Es funktioniert nicht, wenn Sie XLSX anstelle von XLS versuchen.
quelle
Verwenden Sie msexcel-builder . Installieren Sie es mit:
Dann:
// Create a new workbook file in current working-path var workbook = excelbuilder.createWorkbook('./', 'sample.xlsx') // Create a new worksheet with 10 columns and 12 rows var sheet1 = workbook.createSheet('sheet1', 10, 12); // Fill some data sheet1.set(1, 1, 'I am title'); for (var i = 2; i < 5; i++) sheet1.set(i, 1, 'test'+i); // Save it workbook.save(function(ok){ if (!ok) workbook.cancel(); else console.log('congratulations, your workbook created'); });
quelle
mxexcel-builder
seit vier Jahren keine Updates mehr enthält. Ich habe eine Antwort mitexcel4node
unten hinzugefügt .(node:11702) [DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated.
Sie sollten ExcelJS überprüfen
Funktioniert mit CSV- und XLSX-Formaten.
Ideal zum Lesen / Schreiben von XLSX-Streams. Ich habe es verwendet, um einen XLSX-Download auf ein Express-Antwortobjekt zu streamen.
app.get('/some/route', function(req, res) { res.writeHead(200, { 'Content-Disposition': 'attachment; filename="file.xlsx"', 'Transfer-Encoding': 'chunked', 'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) var workbook = new Excel.stream.xlsx.WorkbookWriter({ stream: res }) var worksheet = workbook.addWorksheet('some-worksheet') worksheet.addRow(['foo', 'bar']).commit() worksheet.commit() workbook.commit() }
Funktioniert hervorragend für große Dateien, bietet eine viel bessere Leistung als excel4node (bei einer Datei mit 4 Millionen Zellen in 20 Blättern ist die Speicherauslastung und der Knotenprozess nach fast 5 Minuten abgestürzt ), da die Streaming-Funktionen wesentlich eingeschränkter sind erlaubt nicht, Daten "festzuschreiben ()", um Chunks abzurufen, sobald sie generiert werden können)
Siehe auch diese SO-Antwort .
quelle
XLSx im neuen Office ist nur eine komprimierte Sammlung von XML- und anderen Dateien. Sie können das also generieren und entsprechend komprimieren.
Bonus: Sie können eine sehr schöne Vorlage mit Stilen erstellen und so weiter:
content.xml
(oderxl/worksheets/sheet1.xml
) mit Ihren DatenAllerdings fand ich ODS (openoffice) viel zugänglicher (Excel kann es immer noch öffnen), hier ist, was ich in gefunden habe
content.xml
<table:table-row table:style-name="ro1"> <table:table-cell office:value-type="string" table:style-name="ce1"> <text:p>here be a1</text:p> </table:table-cell> <table:table-cell office:value-type="string" table:style-name="ce1"> <text:p>here is b1</text:p> </table:table-cell> <table:table-cell table:number-columns-repeated="16382"/> </table:table-row>
quelle
Mit dem fs- Paket können wir aus JSON-Daten eine Excel / CSV-Datei erstellen.
Schritt 1: Speichern Sie JSON-Daten in einer Variablen (hier in jsn- Variable).
Schritt 2: Erstellen Sie eine leere Zeichenfolgenvariable (hier sind es Daten ).
Schritt 3: Hängen Sie jede Eigenschaft von jsn an Zeichenfolgenvariablendaten an, während Sie
'\t'
nach Abschluss der Zeile zwischen 2 Zellen und '\ n' einfügen .Code :
var fs = require('fs'); var jsn = [{ "name": "Nilesh", "school": "RDTC", "marks": "77" },{ "name": "Sagar", "school": "RC", "marks": "99.99" },{ "name": "Prashant", "school": "Solapur", "marks": "100" }]; var data=''; for (var i = 0; i < jsn.length; i++) { data=data+jsn[i].name+'\t'+jsn[i].school+'\t'+jsn[i].marks+'\n'; } fs.appendFile('Filename.xls', data, (err) => { if (err) throw err; console.log('File created'); });
quelle
Oder - bauen Sie mit Express auf der Antwort von @Jamaica Geek auf - um das Speichern und Lesen einer Datei zu vermeiden:
res.attachment('file.xls'); var header="Sl No"+"\t"+" Age"+"\t"+"Name"+"\n"; var row1 = [0,21,'BOB'].join('\t') var row2 = [0,22,'bob'].join('\t'); var c = header + row1 + row2; return res.send(c);
quelle
Obwohl diese Frage mehrere Antworten hat, sind sie jetzt möglicherweise etwas veraltet.
Neue Leser ziehen es möglicherweise vor, das Paket xlsx oder "sheetJS" in Betracht zu ziehen , das nun bei weitem das beliebteste Knotenpaket für diesen Anwendungsfall zu sein scheint.
Die aktuelle Top-Antwort empfiehlt excel4node, was ziemlich gut aussieht - aber das letztere Paket scheint weniger gepflegt (und weit weniger beliebt) zu sein als das erstere.
Beantworten Sie die Frage direkt mit xlsx:
const XLSX = require('xlsx'); /* create a new blank workbook */ const wb = XLSX.utils.book_new(); // Do stuff, write data // // // write the workbook object to a file XLSX.writeFile(workbook, 'out.xlsx');
quelle
installiere exceljs
Exceljs importieren
var Excel = require('exceljs'); var workbook = new Excel.Workbook();
Arbeitsmappe erstellen
var options = { filename: __dirname+'/Reports/'+reportName, useStyles: true, useSharedStrings: true }; var workbook = new Excel.stream.xlsx.WorkbookWriter(options);
nach dem Erstellen des Arbeitsblatts
var worksheet = workbook.addWorksheet('Rate Sheet',{properties:{tabColor:{argb:'FFC0000'}}});
Im Array worksheet.column übergeben Sie den Spaltennamen im Header und den Array-Schlüssel im Schlüssel
worksheet.columns = [ { header: 'column name', key: 'array key', width: 35}, { header: 'column name', key: 'array key', width: 35}, { header: 'column name', key: 'array key', width: 20}, ];
Nachdem Sie die forEach-Schleife verwendet haben, fügen Sie eine Zeile nach der anderen in die Exel-Datei ein
array.forEach(function(row){ worksheet.addRow(row); })
Sie können auch eine Schleife für jede Exel-Zeile und -Zelle ausführen
worksheet.eachRow(function(row, rowNumber) { console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values)); }); row.eachCell(function(cell, colNumber) { console.log('Cell ' + colNumber + ' = ' + cell.value); });
quelle
Verwenden Sie die exceljs-Bibliothek zum Erstellen und Schreiben in vorhandene Excel-Tabellen.
In diesem Tutorial finden Sie detaillierte Erklärungen.
Verknüpfung
quelle