2015-12-29 2 views
-3

J'espère que quelqu'un peut m'aider avec ce problème. J'ai essayé de Google quelque chose qui fait ce dont j'ai besoin mais il n'y a pas de spécifique ou facile à adapter et je suis un raté avec la programmation et le codage ...Extraire gz et convertir csv en xlsx

Une application que j'utilise tous les jours produit plusieurs fichiers gz contenant un fichier csv chacun. Dans le but de simplifier un peu ma vie, je souhaite exécuter un script qui font ce travail:

  1. Extrait les fichiers csv de toute gz dans le dossier en cours
  2. Enregistrer tout fichier csv extrait sous forme de fichiers XLSX dans la même dossier
  3. Renommer le fichier XLSX correctement
  4. Supprimer tous les fichiers et gz csv du dossier en cours

Voici quelques détails sur l'environnement et les exigences:

  • L'exécution OS est Windows 7 Enterprise (Powershell est installé)
  • Office 2010 est installé
  • Je ne peux pas installer un logiciel ou d'une bibliothèque supplémentaire (c'est un ordinateur portable d'entreprise)
  • Tout fichier csv a la convention de dénomination suivante:

    CheeseFile_YellowCheese_yyyy_mm_dd-randomnumber_othersnumber.csv CheeseFile_BlueCheese_yyyy_mm_dd-randomnumber_othersnumber.csv HamFile_RawHam_yyyy_mm_dd-randomnumber_othersnumber.csv HamFile_CookedHam_yyyy_mm_dd-randomnumber_othersnumber.csv

  • et doit être respectivement enregistré en tant que:

    OutputFile - CheeseFile_mmddyyyy_Yellow Cheese.xlsx OutputFile - CheeseFile_mmddyyyy_Blue Cheese.xlsx OutputFile - HamFile_mmddyyyy_Raw Ham.xlsx OutputFile - HamFile_mmddyyyy_Coocked Ham.xlsx

  • La date au nom du fichier d'origine doit être conservé dans le fichier XLSX de sortie

  • fichiers de fromage sont dans leur dossier et les fichiers Ham sont dans un dossier séparé, je peux adapter le script J'ai besoin.

S'il vous plaît laissez-moi savoir si vous avez besoin de détails et je vous remercie d'avance pour toute aide appréciée :)

+2

1. Extrait de Google «gz using powershell» 2.Google 'convert csv en xlsx avec powershell' 3. Google 'renommer les fichiers avec PowerShell' 4. Google 'supprimer des fichiers avec powershell' – dfundako

+0

Peut-être que je suis juste fatigué et dans le «bon» humeur pour cela, mais je devine l'OP a passé plus de temps à passer cette commande qu'à googler comment résoudre le problème. – notjustme

Répondre

0

Bien que je suis d'accord l'OP ne semble pas avoir fait leur juste part de ce comprendre out (à quel point est Google?), je sais que quelqu'un d'autre se penchera à l'avenir. L'affichage d'informations les aidera. @OP, je ne vais pas faire tout votre travail de manipulation de fichiers pour vous mais voici le code de base pour convertir de CSV à XLSX qui est probablement la partie la moins commune de la question posée.

Option Explicit 

Dim strCSVfile, strExcelFile, FSO 
Dim objWorkbook, objWorksheet1 

set FSO = CreateObject("Scripting.FileSystemObject") 

strCSVfile = "C:\temp\Excel Test\myFile.csv" 
strExcelFile = "C:\temp\Excel Test\myFile.xlsb" 'this was changed 

if FSO.FileExists(strCSVfile) then 
    Dim objExcel 
    Set objExcel = CreateObject("Excel.Application") 

    objExcel.Visible = False 
    objExcel.displayalerts=false 

    'Import CSV into Spreadsheet 
    Set objWorkbook = objExcel.Workbooks.open(strCSVfile) 
    Set objWorksheet1 = objWorkbook.Worksheets(1) 

    'Save workbook (51 = 2010 format) 
    'Formats ref https://msdn.microsoft.com/en-us/library/office/ff198017.aspx 
    'Parameters ref https://msdn.microsoft.com/en-us/library/office/ff841185.aspx 
    objWorksheet1.SaveAs strExcelFile, 50 'this was changed 
    objExcel.Quit() 
else 
    msgbox "File Note found" 
end if 

Edit:BTW, OP @ ... publier votre code et plus de gens vont vous aider. Si vous mettez à jour votre question avec le code que vous avez écrit pour la décompression et le traitement des fichiers, je vais vous aider avec cette partie.

Édition: Mise à jour pour la sortie au format .xlsb. Les lignes ont changé comme telles.

+0

Bonjour, merci pour votre réponse! En cherchant sur Google, j'ai compris que la meilleure langue était probablement PS, mais c'est un vrai foutoir pour moi. Par exemple, pendant ces jours, certaines exigences ont changé et maintenant je dois enregistrer les fichiers dans xlsb. J'ai suivi les liens que vous avez commentés dans le code en espérant trouver comment le mettre à jour par moi même mais je ne comprends pas comment le faire .... – Sauzer

+0

Merci RLH :) – Sauzer

-3
7z e *.gz;ls | foreach {$old=$_.name;$newname='OutputFile - '+$oldname.split('_')[0]+'_'+$oldname.split('_')[3]+$oldname.split('_')[4]+$oldname.split('_')[2]+'_'+$oldname.split('_')[1]+'.xlsx';mv $oldname $newname } 
+0

Cela ne produirait pas un fichier xlsx correct. – notjustme

+0

"et convertir csv en xlsx" il est dit dans le titre ... – notjustme