Est-ce que csv avec plusieurs onglets / feuilles est possible?

j'appelle un service web et les données du service web sont au format csv. Si j'essaie de sauvegarder des données dans xls/xlsx, alors je reçois plusieurs feuilles dans un classeur. Donc, comment puis-je sauvegarder les données dans csv avec multipletab/sheets dans c#.

je sais que csv avec plusieurs onglets n'est pas pratique, mais y a-t-il un moyen ou une bibliothèque pour enregistrer des données dans csv avec plusieurs onglets/feuille?

11
demandé sur Blorgbeard 2015-04-14 00:12:01

4 réponses

CSV, en tant que format de fichier, suppose une "table" de données; en termes D'Excel qui est une feuille d'un classeur. Bien que ce ne soit qu'un texte simple, et que vous puissiez l'interpréter de la façon que vous voulez, le format CSV "standard" ne supporte pas ce que votre superviseur pense.

Vous pouvez fudge ce que vous voulez de deux manières:

  • utilisez un fichier différent pour chaque feuille, avec des noms apparentés mais distincts, comme "Book1_Sheet1", "Book1_Sheet2" etc. Vous pouvez alors trouver des groupes de fichiers par le texte avant le premier caractère de soulignement. C'est le plus facile à mettre en œuvre, mais nécessite des utilisateurs de schlep autour de plusieurs fichiers par "classeur" logique, et si l'un se perd dans le mélange, vous avez perdu ces données.

  • faites le ci-dessus, et aussi" zip " les fichiers dans une archive unique que vous pouvez déplacer. Vous conservez l'avantage pur CSV de l'option ci-dessus, plus la commodité d'avoir un fichier à déplacer au lieu de plusieurs, mais l'inconvénient d'avoir à zip / décompresser le archive pour accéder aux fichiers actuels. Pour soulager la douleur, si vous êtes dans .NET 4.5, vous avez accès à une implémentation intégrée de ZipFile, et si vous ne l'êtes pas, vous pouvez utiliser L'open-source DotNetZip ou SharpZipLib, qui vous permettra de programmer la création et la consommation de fichiers ZIP Windows standard. Vous pouvez également utiliser le quasi universel .tar.gz (aka .tgz), mais vos utilisateurs auront besoin soit de votre programme, soit d'un outil de compression tiers comme 7Zip ou WinRAR pour créer l'archive à partir d'un ensemble de CSV exportés.

  • implémenter un format quasi-CSV où une ligne vierge (contenant seulement une nouvelle ligne) agit comme un "séparateur d'onglets", et votre analyseur s'attendrait à une nouvelle ligne d'en-têtes de colonne suivie de lignes de données dans la nouvelle configuration. Cette variante de CSV standard peut ne pas être lisible par les autres consommateurs de CSVs car il ne respecte pas le format de fichier prévu, et en tant que tel, je vous recommande de ne pas utiliser le ".csv " extension car il va confondre et frustrer les utilisateurs s'attendant à pouvoir l'ouvrir dans d'autres applications comme les tableurs.

8
répondu KeithS 2015-04-13 22:13:30

si j'essaie de sauvegarder des données dans xls/xlsx, alors je reçois plusieurs feuilles dans un classeur.

votre réponse est dans votre question, n'utilisez pas text / csv (qui peut très certainement faire plusieurs feuilles, il ne peut même pas faire une feuille; il n'y a pas une telle chose comme une feuille dans le texte / csv bien qu'il y ait dans la façon dont certaines applications comme Excel ou Calc choisissent de l'importer dans un format qui a des feuilles) mais l'enregistrer comme xls, xlsx, ods ou un autre format qui a feuille.

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

3
répondu Jon Hanna 2015-04-13 21:19:31

j'ai été en utilisant cette bibliothèque pour un certain temps maintenant,

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

dans mes projets pour importer des données et de la structure à partir de formats comme: xls(x), csv et xml, mais vous pouvez certainement enregistrer dans ces formats aussi bien (tout à partir du client)!

j'Espère que peut vous aider, vous, prendre un coup d'oeil sur la démo en ligne,

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

jeter un coup d'oeil dans le code source ou déposer un problème sur GH? mais je pensez que vous aurez à faire la plupart de codage sur youre

2
répondu Kresimir Pendic 2015-04-13 22:30:06

je pense que vous voulez réduire la taille de votre fichier excel. Si oui, alors vous pouvez le faire en enregistrant comme XLSB i.e., Excel format de classeur binaire. De plus, vous pouvez réduire la taille de votre fichier en supprimant toutes les cellules Vierges.

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

0
répondu Asim Khan 2016-12-28 08:34:52