2017-07-31 1 views
-1

après-midi tout,Powershell - Excel SaveAs csv avec delimiter spécifié

Est-il possible d'enregistrer un fichier CSV à l'aide Powershell avec un délimiteur différent, dans mon cas "§". J'utilise le script suivant pour ouvrir et modifier des éléments dans un fichier XLSX, puis souhaiter enregistrer en tant que fichier CSV délimité par "§". Rechercher et remplacer méthode ne fonctionne pas dans mon cas ((Get-Content -Path $ CSVfile) .Replacer (' '' §') | Set-Content -Path $ CSVfile2)

$Path = "C:\ScriptRepository\CQC\DataToLoad\" 
$FileName = (Get-ChildItem $path).FullName 
$FileName2 = (Get-ChildItem $path).Name 
$CSVFile = "$Path\$Filename2.csv" 

$Excel = New-Object -ComObject Excel.Application -Property @{Visible = 
$false} 
$Excel.displayalerts=$False 
$Workbook = $Excel.Workbooks.Open($FileName) 
$WorkSheet = $WorkBook.Sheets.Item(2) 
$Worksheet.Activate() 
$worksheet.columns.item('G').NumberFormat ="m/d/yyyy" 
$Worksheet.Cells.Item(1,3).Value = "Site ID" 
$Worksheet.Cells.Item(1,4).Value = "Site Name" 

$Worksheet.SaveAs($CSVFile, 
[Microsoft.Office.Interop.Excel.XlFileFormat]::xlCSVWindows) 

$workbook.Save() 
$workbook.Close() 
$Excel.Quit() 
+0

On dirait que le moyen le plus simple est de modifier le délimiteur "last used" avec un appel noop efficace à la méthode ['Range.TextToColumns'] (https://superuser.com/a/291519/114733) en utilisant le délimiteur désiré –

Répondre

0

Exécution du commande suivante, vous permettra d'enregistrer le fichier CSV à l'aide du séparateur §

Import-CSV filename.csv | ConvertTo-CSV -NoTypeInformation -Delimiter "§" | Out-File output_filename.csv 

vous devriez vérifier ImportExcel - Module PowerShell pour importer/exporter des feuilles de calcul Excel, sans Excel. Cela facilite le travail avec les fichiers Excel en utilisant PowerShell.

+0

Merci Ishan, cela fonctionne. J'espérais cependant que cela pourrait être fait avec les commandes Excel si possible. –