web-dev-qa-db-fra.com

Convertir .CSV en .XLSX en ligne de commande

Je cherche un moyen de convertir par lots une série de fichiers .csv en .xlsx à l'aide de la ligne de commande.

J'ai essayé plusieurs types de VBScripts que j'ai trouvés, mais ils semblent tous convertir .xlsx en .csv et non l'inverse.

Voici le plus proche que j'ai pu trouver mais là encore c'est .xlsx à .csv:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"

Des idées?

7
crackruckles

la seule condition requise est que le ".csv" soit en minuscule dans le nom du fichier:

Dim file, WB

With CreateObject("Excel.Application")
    On Error Resume Next
    For Each file In WScript.Arguments
        Set WB = .Workbooks.Open(file)
        WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51
        WB.Close False
    Next    
    .Quit
End With

WScript.Echo "Done!"
8
Sam

Disclaimer: J'ai écrit CSV2XLSX en open-source à https://gitlab.com/DerLinkshaender/csv2xlsx

Vous voudrez peut-être essayer un outil externe comme celui ci-dessus. Pourquoi?

Avantages: 

  • peut être utilisé même lorsque Windows Script Host est bloqué.
  • indépendant du système d'exploitation, vous pouvez donc utiliser un outil familier avec le même jeu d'options sur chaque système d'exploitation (sauvegarde de la mémoire cérébrale :-)).
  • aucune installation d'Excel ou de LibreOffice, etc. n'est nécessaire, vous n'avez donc pas à vous préoccuper de l'installation de modules ou de langues supplémentaires.
  • la spécification de plusieurs paramètres CSV en tant que paramètres de ligne de commande rend l'outil "convivial pour SysAdmin", car ils ne doivent pas digérer le code source.
  • vous pouvez même spécifier des plages de lignes ou de colonnes pour les données csv.
  • le format de fichier xlsx est très complexe, l’écrire sans recourir à l’installation d’un package bureautique n’est pas une mince affaire.
  • mieux adapté au traitement par lots car l'outil peut être intégré à la logique de boucle spécifique au système d'exploitation.
  • J'ai essayé de fournir un ensemble utile d'indicateurs de ligne de commande avec DevOps/SysAdmin à l'esprit, de nombreux scripts existants manquent d'un bon contrôle via les options de ligne de commande.
7
Arminius

Pour Windows, j'ai récemment répondu à une question similaire sur SuperUser.com.

https://superuser.com/a/1011154/326177

Je pense que Total CSV Converter est l’option la moins chère avec le plus de fonctionnalités. Il ne nécessite même pas l'installation d'Excel et peut générer des données CSV au format JSON, Access, DBF, XML ou SQL.

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>
1
James Moberg

Êtes-vous sous Windows ou Linux/Mac?

Je pourrais avoir une solution pour vous de toute façon.

Voici la solution à vos problèmes sans les programmes commentés ci-dessous:

https://social.msdn.Microsoft.com/Forums/en-US/74df1378-7c0c-4c0f-b174-fa97a5c2969b/convert-csv-to-xlsx?forum=Vsexpressvb

EDIT Voici donc la solution de base:

Fondamentalement, vous appliquez un filtre (qui dans le cas serait le filtre xlsx) à partir du répertoire où se trouve votre fichier.

Nvm cela, je viens de voir que vous utilisez Windows ./directory --headless --convert-to xlsx: "Calc MS Excel 2007 XML" fichier.csv

dans ce cas, "Calc MS Excel 2007 XML" est le filtre.

Cela fonctionne pour des fichiers uniques, laissez-moi ajouter un lot dans une seconde.

0
Robert Melikyan

Voici un outil open-source pour les machines Windows que j'ai créé à l'aide des bibliothèques NPOI qui permet de convertir des fichiers délimités simples en conversions XLS/XLSX sans que Excel ait besoin d'être installé sur la machine. Le binaire est dans Bin/Debug si vous ne voulez pas le construire vous-même. Toutes les bibliothèques nécessaires sont incluses dans l'exécutable afin qu'il puisse fonctionner de manière autonome.

https://github.com/nmolinos/csv2Excel

0
Nico M