Question Copie du format d'un fichier Excel

Plus d'informations
il y a 2 ans 11 mois #30799 par ElPelorojo
Bonjour à tous,

Voila mon premier post pour lequel je fais appel à vos avis et expertises !

Mon objectif est de convertir un fichier .csv dans un format .xlsx qui reprendrait la même forme (police, couleurs, ...) qu'un fichier .xlsx existant (template entreprise).
Ma question est : est-il possible de récupérer la configuration d'un fichier excel existant via PowerShell pour les copier lors de la conversion d'un fichier .csv et .xlsx ?

Merci d'avance pour vos réponses.

ElPelorojo

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30820 par Laurent Dardenne
Salut,
oui c'est possible, bien que le mieux soit de remplir un template sans se préocupper du formatage juste des coordonnées d'insertion.
Dans ce cas on ne récupère pas la structure mais on la documente dans le code, exemple :
New-Variable 'ColonneDescription' -Option ReadOnly -Value ([Int]1) -Description 'Numéro de la colonne de la section "Description".'

$LignesXYZ=@{
    #lignes du groupe X
   Fr=51..53;

    #lignes du groupe Y
   En=57..59;

    #lignes du groupe Z
   Es=63..64;
}
Et comme un template évolue cela simplfie l'écriture et la relecture, enfin je trouve :-)
Le problème restant est que la structure du fichier XL doit être figée/protégée...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois - il y a 2 ans 11 mois #30821 par ElPelorojo
Hello,

Merci pour ta réponse, je comprends.
Dans mon cas justement le template n'évoluera pas, des données viendront uniquement s'ajouter.

Cependant j'ai du mal de comprendre (surement à cause mon niveau de débutant) comment on intègre la structure d'un modèle existant dans le code qui tu as donné ? Notamment dans la partie $LgnesXYZ=@{
}

J'ai cru comprendre également qu'on pouvait utiliser le module Import-Excel pour utiliser un fichier existant.

Merci d'avance pour tes explications et ton temps.
Dernière édition: il y a 2 ans 11 mois par ElPelorojo.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30822 par Laurent Dardenne
>>comment on intègre la structure d'un modèle existant dans le code
On déclare des variables qui référencent des informations sur la structure de la feuille XL.
Par exemple le nom de machine est en ligne 3 colonne1 :
$MachineLigne=3 
$MachineColonne=1
Ensuite tu utilises ses variables pour insérer tes données.
C'est vrai que sans le code complet difficile de comprendre la démarche...

Un exemple de lecture de données :
function Read-XYZ{
    #retrouve les noms XYZ et leurs valeur
    param(
      $Range #provient d'une feuille excel, zone de recherche des données
    )
  
   #mémorise la référence
   $Cells=$Range.Cells
  
    #Parcourt les lignes de noms XYZ sur 3 colonnes de 2 cellules
   foreach($Groupe in $LignesXYZ.GetEnumerator())
   {
       foreach($Colonne in $ColonnesXYZ)
       {
          foreach($Ligne in $Groupe.Value)
          {
             #Verbeux, mais nécessaire pour décrementer le compteur de référence de l'appli COM
            $obj=$Cells.Item($ligne,$colonne)
            $Name=$obj.value2
            $null=[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Obj)
            $Obj=$null
  
            $O=[pscustomobject]@{
                PSTypeName='XYZ';
                Name=$Name;
                #...
            }
            Write-Output $O
          }
       }
   }
   $null=[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Cells)
   $Cells=$null
  }

>>J'ai cru comprendre également qu'on pouvait utiliser le module Import-Excel
Oui il peut simplifier le code. Dans mon projet actuel je ne peux l'utiliser pour des raisons d'infra j'ai donc réécrit les traitements de base.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30823 par ElPelorojo
Ok, super merci pour cette explication détaillée

Je n'ai pas trouvé (ou mal cherché) d'explication pour l'utilisation du module import-excel, aurais-tu une base de connaissance ou des explications à me donner sur son fonctionnement ?

Cela semblerait moins fastidieux que de déclarer des variables qui référencent des informations sur la structure de la feuille XL.

Merci d'avance.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 11 mois #30824 par Laurent Dardenne
>> aurais-tu une base de connaissance ou des explications à me donner sur son fonctionnement ?
Pour les projets public, consulte les exemples et/ou les test unitaires.

>>Cela semblerait moins fastidieux
Un ordinateur ne peut pas deviner ce que tu veux faire. En aparté c'est le slogan 'Vous en avez révé, Sony l'a fait !", pas besoin de passer par la case travail, c'est 'instantané'.

>>que de déclarer des variables qui référencent des informations sur la structure de la feuille XL.
On est bien obligé de préciser où sont les données.
Surtout que Powershell nous facilite la vie, code la même chose en C++. Là ce sera fastidieux de devoir se préoccuper de tout les détails technique.

Bref, avec ou sans module import-excel, pour écrire une info on doit savoir où l'écrire.
Lire une donnée est effectivement plus facile.

Donc c'est relativement fastidieux à écrire (on ne recopie pas le bottin non plus), mais à relire 6 mois après, t'es content t'avoir perdu un peu temps à détailler ce que tu fais ;-)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.079 secondes
Propulsé par Kunena