webentwicklung-frage-antwort-db.com.de

Ist csv mit multi tabs/sheet möglich?

Ich rufe einen Webdienst an und die Daten des Webdienstes liegen im CSV-Format vor. Wenn ich versuche, Daten in xls/xlsx zu speichern, erhalte ich mehrere Arbeitsblätter in einer Arbeitsmappe. So kann ich die Daten in csv mit multipletab/Arbeitsblättern in c # speichern.

Ich weiß, dass CSV mit mehreren Registerkarten nicht praktikabel ist, aber gibt es eine verdammte Möglichkeit oder eine Bibliothek, um Daten in CSV mit mehreren Registerkarten/Blatt zu speichern?

12
hello temp9

CSV setzt als Dateiformat eine "Tabelle" von Daten voraus; In Excel ist dies ein Arbeitsblatt. Während es sich um reinen Text handelt und Sie ihn beliebig interpretieren können, unterstützt das CSV-Format "Standard" nicht das, was Ihr Vorgesetzter denkt.

Sie können auf verschiedene Arten fälschen, was Sie wollen:

  • Verwenden Sie für jedes Blatt eine andere Datei mit verwandten, aber eindeutigen Namen wie "Book1_Sheet1", "Book1_Sheet2" usw. Sie können Gruppen von verwandten Dateien anhand des Textes vor dem ersten Unterstrich suchen. Dies ist am einfachsten zu implementieren, aber die Benutzer müssen mehrere Dateien pro logischer "Arbeitsmappe" mitschleppen, und wenn eine durch den Shuffle verloren geht, haben Sie diese Daten verloren.

  • Führen Sie die obigen Schritte aus und packen Sie die Dateien auch in ein einziges Archiv, in dem Sie sich bewegen können. Sie behalten den reinen CSV-Vorteil der oben genannten Option und die Bequemlichkeit, eine Datei anstelle von mehreren Dateien verschieben zu müssen. Der Nachteil besteht jedoch darin, das Archiv zu komprimieren/zu entpacken, um zu den eigentlichen Dateien zu gelangen. Wenn Sie in .NET 4.5 arbeiten, haben Sie Zugriff auf eine integrierte ZipFile-Implementierung. Andernfalls können Sie Open-Source-DotNetZip oder SharpZipLib verwenden, mit denen Sie programmgesteuert und programmieren können Verwenden Sie Standard-Windows-Zip-Dateien. Sie können auch die nahezu universelle .tar.gz-Kombination (aka .tgz) verwenden, aber Ihre Benutzer benötigen entweder Ihr Programm oder ein Komprimierungsprogramm eines Drittanbieters wie 7Zip oder WinRAR, um das Archiv aus einer Gruppe exportierter CSVs zu erstellen.

  • Implementieren Sie ein Quasi-CSV-Format, in dem eine leere Zeile (die nur einen Zeilenumbruch enthält) als "Tabulator-Trennzeichen" fungiert, und Ihr Parser erwartet eine neue Zeile mit Spaltenüberschriften gefolgt von Datenzeilen in der neuen Konfiguration. Diese Variante der Standard-CSV-Datei kann möglicherweise nicht von anderen CSV-Konsumenten gelesen werden, da sie nicht dem erwarteten Dateiformat entspricht. Daher würde ich empfehlen, dass Sie nicht die Erweiterung ".csv" verwenden, da dies die Benutzer verwirren und frustrieren wird, wenn Sie dies erwarten in der Lage sein, es in anderen Anwendungen wie Tabellenkalkulationen zu öffnen.

9
KeithS

Wenn ich versuche, Daten in xls/xlsx zu speichern, bekomme ich mehrere Arbeitsblätter in einer Arbeitsmappe.

Ihre Antwort ist in Ihrer Frage, verwenden Sie nicht text/csv (was mit Sicherheit nicht mehrere Blätter machen kann, es kann nicht einmal ein Blatt machen; es gibt kein Blatt in text/csv Einige Anwendungen wie Excel oder Calc importieren sie jedoch in ein Format, das über Arbeitsblätter verfügt. Es ist jedoch möglich, sie als xls, xlsx, ods oder ein anderes Format zu speichern, das über Arbeitsblätter verfügt.

Sowohl XLSX als auch ODS sind viel komplizierter als Text/CSV, sind jedoch wahrscheinlich die einfachste ihrer jeweiligen Formatsätze.

3
Jon Hanna

Ich benutze diese Bibliothek jetzt schon eine Weile, 

https://github.com/SheetJS/js-xlsx

in meinen Projekten importiere ich Daten und Strukturen aus Formaten wie: xls (x), csv und xml, aber Sie können sicher auch in diesen Formaten speichern (alle vom Client)! 

Ich hoffe, das kann Ihnen helfen, werfen Sie einen Blick auf die Online-Demo, 

http://oss.sheetjs.com/js-xlsx/

einen Blick in den Quellcode werfen oder ein Problem mit GH einreichen? Aber ich denke, dass Sie die meisten Codierungen selbst machen müssen 

2
Kresimir Pendic

Ich denke, Sie möchten die Größe Ihrer Excel-Datei reduzieren. Wenn ja, können Sie dies tun, indem Sie es als xlsb speichern, d. H. Als Excel Binary Workbook-Format. Außerdem können Sie die Dateigröße reduzieren, indem Sie alle leeren Zellen löschen.

Ich hoffe, das beantwortet Ihre Bedenken. 

0
Asim Khan