Supprimer la première ligne d'un fichier EXCEL avec des commandes DOS dans fichier .bat

a marqué ce sujet comme résolu.

Bonjour,

Je suis bloqué dans l’écriture d’un script à réaliser en vue de supprimer la première ligne seulement d’un fichier.

Ce script comprend des commandes DOS dans un fichier exécutable WINDOWS (fichier à extension .bat).

Voici 3 actions :

1/ discriminer la première ligne seulement dans un fichier EXCEL d’extension .xlsx.

2/ créer un fichier temporaire comprenant une correction dudit fichier c’est-à-dire sans la première ligne avec une désignation différente.

3/ supprimer le fichier initial et renommer le fichier temporaire en lui donnant la désignation du fichier initial.

Le tour est joué, j’ai mon fichier sans la première ligne.

J’ai tenté d’imbriquer les commandes FOR et FINDSTR sans succès en vue de ,sélectionner la première ligne entièrement, sans succès.

@ECHO OFF

color 0A

for /f  %%i in ('findstr /n /r . "Shimano_2023-05-15-15-02 Stade 2.csv"') do (if %%i geq 1 if %%i leq 2 echo %%j)

rem set /p filename="Enter filename with "" : "
rem FOR /f %%i IN (%filename%) DO (echo ligne %%i)

rem FINDSTR /v "=" %filename% > "Temporary_"%filename%
rem del %filename%
rem ren "Temporary_"%filename% %filename%

rem start https://bikeoffice.5ive.fr

pause

La ligne avec "for" est fausse, c’est juste du bricolage.

Merci de votre aide.

Il y a quelques subtilités. Je te donne la base:

@echo off
set c=f
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('type aa.t') do (
    if "!c!" neq "f" (
        echo %%i >> fichier_de_sortie
    )
    set c=n
)
endlocal

Il faut utiliser l’expansion retardée pour que ça marche.

Il faut faire l'echo des lignes dans un fichier. Puis on fait un del du fichier d’origine et un rendu nouveau fichier.

+1 -0

Tu parles (dans le point Action n°1) de fichier d’extension xlsx, mais dans le script d’origine, tu parles d’un fichier d’extension csv.

Ces 2 cas de figures sont totalement différents.

Dans un fichier xlsx, il peut y avoir tout de qui est propre à un tableur, des cellules colorées, encadrées, avec différentes polices, il peut y avoir plusieurs onglets, et surtout, il peut y avoir des formules de calculs.

A partir d’un fichier xlsx, on peut créer un fichier csv. Mais tous ces trucs sont perdus. On passe d’un format 'propriétaire' (= théoriquement lisible uniquement par l’outil TABLEUR) à un format DOS, lisible par n’importe quel outil informatique.Mais un truc sans aucune notion de mise en forme .

Enlever la première ligne d’un fichier CSV, ça peut se faire comme proposé par PierrotLeFou.

Si tu as un fichier XLSX, et que tu veux garder ce format XLSX(et donc garder toutes les notions de couleurs, de polices de caractères etc etc), c’est une autre technologie qu’il faut utiliser).

+1 -0

Bonjour,

Elegance,

Il est prévu à terme le choix du fichier d’entrée et son extension. Pour le moment, seule l’extension .csv est obligatoire car je n’ai pas encore trouvé le moyen de convertir le format .xlsx et .csv Il est vrai qu’il y a des choses dans .xlsx et non dans .csv comme les coloriages de cellules et autres. Mais cela n’a aucune espèce d’importance, seules les contenus des cellules dans les lignes et colonnes m’intéressent c’est-à-dire les chaînes de caractères.

Titi31.

+0 -0

Si, justement, ça a une importance énorme, c’est ce que dit elegance : le csv est un format simple que tu peux traiter de cette manière, mais pas le xslx. Pour un fichier tableur, il faut utiliser un outil qui puisse interpréter le fichier, et donc à priori pas un script bash (le classique étant plutôt un script python avec la bibliothèque adéquate).

+1 -0

Bonjour, … le moment, seule l’extension .csv est obligatoire car je n’ai pas encore trouvé le moyen de convertir le format .xlsx et .csv Titi31.

TITI31

Cette conversion est simple à faire. Il suffit de faire "enregistrer sous" et de choisir le format "csv". Sur ma version, c’est
CSV UTF-8 (délimité par des virgules) (*.csv)

Ensuite, n’importe quel éditeur de texte permet de supprimer la première ligne.

+0 -1

Le but est de faire ça programmatiquement… Si on peut ouvrir manuellement le fichier excel, l’exporter en CSV, puis ouvrir le CSV dans un éditeur de texte pour enlever la première ligne, on pourrait aussi simplement supprimer manuellement la première ligne dans le fichier excel. :-°

Le plus simple pour manipuler des fichiers excel est probablement d’utiliser Python, par exemple avec openpyxl. Une autre option en Python si tu t’en fous de la mise en forme est de passer par pandas ou bien polars pour pouvoir lire des fichiers excel ou csv et les manipuler comme des tableaux de données.

+0 -0

Bonjour,

Navré pour mon absence de réponse mais je suis en pleine recherche en ce moment. J’ai le choix de recourir à VBA ou bien à des commandes DOS dans un .bat

Par ailleurs je voudrais aussi automatiser la recherche et la suppression des derniers caractères CR LF de la dernière ligne d’un fichier .csv Je travaille à tout cela.

Bien à vous.

Salut,

J’ai le choix de recourir à VBA ou bien à des commandes DOS dans un .bat

Si tu peux utiliser VBA, ce sera bien mieux adapté que des commandes DOS pour manipuler des fichiers Excel. C’est un langage littéralement conçu juste pour ça, il y a une commande toute faite pour supprimer juste une ligne (quelque chose comme Rows(1).Delete devrait faire l’affaire).

Par ailleurs je voudrais aussi automatiser la recherche et la suppression des derniers caractères CR LF de la dernière ligne d’un fichier .csv Je travaille à tout cela.

Tu veux dire des lignes vides à la fin? Si tu ouvres ton csv dans Excel, il va ignorer les lignes vides.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte