web-dev-qa-db-fra.com

Est-ce que csv avec multi onglets/feuille est possible?

J'appelle un service Web et les données du service Web sont au format CSV. Si j'essaie d'enregistrer des données dans xls/xlsx, j'obtiens plusieurs feuilles dans un classeur . Alors, comment puis-je enregistrer les données au format CSV avec multipletab/sheets en c #.

Je sais que csv avec plusieurs onglets n’est pas pratique, mais existe-t-il une foutue façon ou une bibliothèque pour enregistrer des données au format csv avec plusieurs onglets/feuilles?

12
hello temp9

CSV, en tant que format de fichier, suppose une "table" de données; en termes Excel, c'est une feuille de classeur. Bien que ce ne soit que du texte brut et que vous puissiez l'interpréter comme bon vous semble, le format CSV "standard" ne prend pas en charge ce que votre superviseur est en train de penser.

Vous pouvez modifier ce que vous voulez de plusieurs manières:

  • Utilisez un fichier différent pour chaque feuille, avec des noms associés mais distincts, tels que "Book1_Sheet1", "Book1_Sheet2", etc. Vous pouvez ensuite rechercher des groupes de fichiers liés par le texte précédant le premier trait de soulignement. C'est la solution la plus simple à mettre en œuvre, mais elle oblige les utilisateurs à gérer plusieurs fichiers par "classeur" logique. Si vous perdez l'un d'entre eux dans la lecture aléatoire, vous perdrez ces données.

  • Faites ce qui précède et "zippez" les fichiers dans une seule archive que vous pourrez déplacer. Vous conservez l'avantage pur du format CSV de l'option ci-dessus, plus l'avantage de pouvoir déplacer un fichier au lieu de plusieurs, mais l'inconvénient de devoir compresser/décompresser l'archive pour accéder aux fichiers réels. Pour vous faciliter la tâche, si vous utilisez .NET 4.5, vous avez accès à une implémentation ZipFile intégrée. Sinon, vous pouvez utiliser la source ouverte DotNetZip ou SharpZipLib, qui vous permettra de créer et de consommez des fichiers Windows Zip standard. Vous pouvez également utiliser la combinaison presque universelle .tar.gz (ou .tgz), mais vos utilisateurs auront besoin de votre programme ou d'un outil de compression tiers, tel que 7Zip ou WinRAR, pour créer l'archive à partir d'un ensemble de fichiers CSV exportés.

  • Implémentez un format quasi-CSV dans lequel une ligne vide (contenant uniquement une nouvelle ligne) sert de "séparateur de tabulation" et votre analyseur s'attend à une nouvelle ligne d'en-tête de colonne suivie de lignes de données dans la nouvelle configuration. Cette variante du fichier CSV standard peut ne pas être lisible par d'autres consommateurs de fichiers CSV car elle ne respecte pas le format de fichier attendu. Par conséquent, je vous recommande de ne pas utiliser l'extension ".csv" car cela risquerait de désorienter et frustrer les utilisateurs pour pouvoir l'ouvrir dans d'autres applications telles que des feuilles de calcul.

9
KeithS

Si j'essaie d'enregistrer des données dans xls/xlsx, plusieurs feuilles sont classées dans un classeur.

Votre réponse se trouve dans votre question, n'utilisez pas text/csv (qui peut très certainement pas créer plusieurs feuilles, il ne peut même pas créer une seule feuille; Voici comment certaines applications, telles que Excel ou Calc, choisissent de l’importer dans un format comportant des feuilles mais enregistrez-le au format xls, xlsx, ods ou dans un autre format comportant des feuilles.

XLSX et ODS sont bien plus compliqués que text/csv, mais sont probablement les plus simples de leurs ensembles de formats respectifs.

3
Jon Hanna

J'utilise cette bibliothèque depuis un moment maintenant, 

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

dans mes projets pour importer des données et une structure à partir de formats tels que: xls (x), csv et xml, mais vous pouvez certainement en enregistrer dans ce format également (tous à partir du client)! 

J'espère que cela peut vous aider, jetez un coup d'œil à la démonstration en ligne, 

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

un aperçu du code source ou un problème sur GH? mais je pense que vous devrez faire le plus de codage sur votre propre 

2
Kresimir Pendic

Je pense que vous voulez réduire la taille de votre fichier Excel. Si oui, vous pouvez le faire en l’enregistrant au format xlsb, c’est-à-dire au format de classeur binaire Excel. En outre, vous pouvez réduire la taille de votre fichier en supprimant toutes les cellules vides.

J'espère que cela répond à votre préoccupation. 

0
Asim Khan