Question
Copier un fichier CSV dans un onglet Excel
- TomA
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 12 ans 4 mois #16391
par TomA
Copier un fichier CSV dans un onglet Excel a été créé par TomA
Salut à tous,
Voici mon soucis:
Je suis en train de faire un script qui me génère 5 fichiers CSV. A la fin de ce script, j'ai besoin d'intégrer ces CSV dans un fichier Excel nommé template qui s'occupe de faire des statistiques sur les donnés présent dans le fichiers CSV.
Mon fichier template contient donc 5 onglet qui doivent accueillir les données des fichiers CSV + 1 autre onglet qui contient les formules permettant de faire les calculs.
Ce que j'ai déjà essayé:
- Le fichier template ne contient qu'un onglet, je transforme le fichiers CSV en XL puis les importes en tant que nouvel onglet dans mon fichier template. Dans ce cas là, les formules du template sautent...
Une solution: remplir les onglets du fichier XL directement sans passer par les fichiers CSV seulement c'est beauuuucoup plus long
Y'a t'il donc une possibilité pour copier un fichier CSV dans un onglet existant d'un fichier Excel ?
Merci d'avance. Si je ne suis pas clair dans mes explications, n'hésitez pas à le dire
Voici mon soucis:
Je suis en train de faire un script qui me génère 5 fichiers CSV. A la fin de ce script, j'ai besoin d'intégrer ces CSV dans un fichier Excel nommé template qui s'occupe de faire des statistiques sur les donnés présent dans le fichiers CSV.
Mon fichier template contient donc 5 onglet qui doivent accueillir les données des fichiers CSV + 1 autre onglet qui contient les formules permettant de faire les calculs.
Ce que j'ai déjà essayé:
- Le fichier template ne contient qu'un onglet, je transforme le fichiers CSV en XL puis les importes en tant que nouvel onglet dans mon fichier template. Dans ce cas là, les formules du template sautent...
Une solution: remplir les onglets du fichier XL directement sans passer par les fichiers CSV seulement c'est beauuuucoup plus long
Y'a t'il donc une possibilité pour copier un fichier CSV dans un onglet existant d'un fichier Excel ?
Merci d'avance. Si je ne suis pas clair dans mes explications, n'hésitez pas à le dire
Connexion ou Créer un compte pour participer à la conversation.
- ANTRI Mohamed
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 124
- Remerciements reçus 0
il y a 12 ans 4 mois #16392
par ANTRI Mohamed
Réponse de ANTRI Mohamed sur le sujet Re:Copier un fichier CSV dans un onglet Excel
Hello,
Merci de regarder au niveau des objets COM pour Excel.
Merci de regarder au niveau des objets COM pour Excel.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 4 mois #16393
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Copier un fichier CSV dans un onglet Excel
Salut,
d'autres possibilités/idées :
oledbdataadapter .
OpenXML .
Utiliser le copier/coller via COM (jamais fait).
Inverser ton traitement importer les données puis leur appliquer le template.
Un outil payant (pas testé).
Pour piloter XL avec COM tu as besoin de connaitre les classe disponible( cf. MSDN ) ou t'inspirer de ceci .
[edit]
Une dernière, s'appuyer sur du code C# .<br><br>Message édité par: Laurent Dardenne, à: 22/11/13 12:15
d'autres possibilités/idées :
oledbdataadapter .
OpenXML .
Utiliser le copier/coller via COM (jamais fait).
Inverser ton traitement importer les données puis leur appliquer le template.
Un outil payant (pas testé).
Pour piloter XL avec COM tu as besoin de connaitre les classe disponible( cf. MSDN ) ou t'inspirer de ceci .
[edit]
Une dernière, s'appuyer sur du code C# .<br><br>Message édité par: Laurent Dardenne, à: 22/11/13 12:15
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- TomA
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 12 ans 3 mois #16404
par TomA
Réponse de TomA sur le sujet Re:Copier un fichier CSV dans un onglet Excel
Salut,
Merci pour vos deux réponses, j'ai finalement trouvé une solution qui fonctionne parfaitement:
J'ai ces fichiers dans mon dossier:
- ALL.csv
- Android.csv
- BlackBerry.csv
- iOS.csv
- Others.csv
- WindowsPhone.csv
- Template.xlsx
[code:1]
$FileName = \"$($Path)\Devices.xlsx\"
$template = \"$($Path)\template.xlsx\"
#Open template
$XL = new-object -comobject Excel.Application
$XL.visible = $true
$WB = $XL.Workbooks.Open($Template) #open the template
#Get all template sheets properties
$Sheets = $WB.sheets
#Different template tabs
$DeviceOS = (\"ALL\",\"Android\",\"BlackBerry\",\"iOS\",\"Others\",\"WindowsPhone\"«»)
ForEach($OS in $DeviceOS)
{
$CSVfile = \"$($path)\$($OS).csv\"
$CurrentOS = \"$OS\"
#Activate the tab corresponding to the current OS file
$s1 = $sheets | where {$_.name -eq $CurrentOS }
$s1.Activate()
#Import data from my CSV file
$s1Data = Import-Csv $CSVfile -delimiter \",\"
#Convert to csv with tab separator and then copy to the clipboard
$s1data | ConvertTo-Csv -Delimiter \"`t\" -NoTypeInformation | Clip
#Select the first sheet cell and paste
$s1.cells.item(1,1).Select()
$s1.Paste()
}
#Select Stat template before saving
$StatSheet = $WB.Worksheets.Item(\"Stats\"«»)
$StatSheet.activate()
$WB.SaveAs($FileName)
$XL.Quit()
[/code:1]
D'ailleurs si des améliorations sont possibles, je vous écoute
<br><br>Message édité par: TomA, à: 25/11/13 15:44
Merci pour vos deux réponses, j'ai finalement trouvé une solution qui fonctionne parfaitement:
J'ai ces fichiers dans mon dossier:
- ALL.csv
- Android.csv
- BlackBerry.csv
- iOS.csv
- Others.csv
- WindowsPhone.csv
- Template.xlsx
[code:1]
$FileName = \"$($Path)\Devices.xlsx\"
$template = \"$($Path)\template.xlsx\"
#Open template
$XL = new-object -comobject Excel.Application
$XL.visible = $true
$WB = $XL.Workbooks.Open($Template) #open the template
#Get all template sheets properties
$Sheets = $WB.sheets
#Different template tabs
$DeviceOS = (\"ALL\",\"Android\",\"BlackBerry\",\"iOS\",\"Others\",\"WindowsPhone\"«»)
ForEach($OS in $DeviceOS)
{
$CSVfile = \"$($path)\$($OS).csv\"
$CurrentOS = \"$OS\"
#Activate the tab corresponding to the current OS file
$s1 = $sheets | where {$_.name -eq $CurrentOS }
$s1.Activate()
#Import data from my CSV file
$s1Data = Import-Csv $CSVfile -delimiter \",\"
#Convert to csv with tab separator and then copy to the clipboard
$s1data | ConvertTo-Csv -Delimiter \"`t\" -NoTypeInformation | Clip
#Select the first sheet cell and paste
$s1.cells.item(1,1).Select()
$s1.Paste()
}
#Select Stat template before saving
$StatSheet = $WB.Worksheets.Item(\"Stats\"«»)
$StatSheet.activate()
$WB.SaveAs($FileName)
$XL.Quit()
[/code:1]
D'ailleurs si des améliorations sont possibles, je vous écoute
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 3 mois #16407
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Copier un fichier CSV dans un onglet Excel
Joli !
TomA écrit:
La libération mémoire peut-être amélioré je pense.
Et pour tes lecteurs, se serait bien de préciser les conditions d'implémentation du couper/coller à partir un CSV. Ainsi d'autres pourront réutiliser ton procédé.
TomA écrit:
La dépendance à Clip.exe n'est pas explicitée.D'ailleurs si des améliorations sont possibles, je vous écoute
La libération mémoire peut-être amélioré je pense.
Et pour tes lecteurs, se serait bien de préciser les conditions d'implémentation du couper/coller à partir un CSV. Ainsi d'autres pourront réutiliser ton procédé.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Copier un fichier CSV dans un onglet Excel