Formazione e Tecnologia
Modificare il delimitatore di celle in un file Excel CSV con Powershell.

Modificare il delimitatore di celle in un file Excel CSV con Powershell.

Scaricare report dai portali web passa nella quasi totalità di casi da file Microsoft Excel CSV, di fatto dei file di testo leggeri ed a basso rischio di contaminazione. Il trovare direttamente dei file Excel di tipo XLSX o dei file PDF è invece più raro.

Il problema dei file in formato CSV è legato al separatore delle celle, che nei file scaricati, in particolare da portali internazionali, è tipicamente la virgola. Questo valore nelle installazioni di Microsoft Excel è ereditato dalle impostazioni regionali, dove nel caso della lingua italiana è il punto e virgola.

Le strade per aprire i file CSV con la corretta formattazione sono molteplici.

Tra le vie rapide, la più comoda e veloce, è quella di cambiare l’estensione del file da CSV a TXT ed aprirlo direttamente da Microsoft Excel, andando ad impostare a mano il separatore da usare ed eventualmente altre formattazioni.

La via diretta da Microsoft Excel è quella di modificare al suo interno le impostazioni regionali, andando a modificare il delimitatore dei decimali da virgola a punto, questo impatta ovviamente anche sulla visualizzazione dei valori numerici nelle celle, ma essendo già all’interno di Microsoft Excel tanto vale aprire il file dopo aver cambiato l’estensione.

La via che abbiamo scelto al culmine dell’irritazione è stata quella di creare uno script in Powershell da lanciare in riga di comando con alcuni parametri. Lo script apre il file, cambia il separatore e salva il file con un nome modificato. A questo punto basta un doppio click sul file per averne la lettura formattata in Microsoft Excel.

LEGGI ANCHE -  Gestione Avanzata del DHCP con Microsoft Windows Server e PowerShell

Lo script di modifica del file CSV

La strada usata è molto semplice e si presta ad altre tipologie di correzioni dei contenuti dei file di testo.

Il file in formato CSV è facilmente apribile e gestibile da parte di qualsiasi script. Pertanto, abbiamo realizzato un piccolo script da eseguire dalla console di Powershell andando a specificare il percorso del file, il separatore presente e quello con cui sostituirlo.

Lo script legge l’intero file e con il metodo di replace sostituisce il delimitatore esistente con quello specificato, per quindi salvare il contenuto modificato in un file con il nome originale e l’aggiunta del suffisso _edited.

A questo punto cliccando il file si ha la sua apertura in Microsoft Excel senza dover eseguire alcuna azione aggiuntiva.

Scarica direttamente lo script dal nostro cloud ed apri al volo i tuoi file CSV.

Il codice dello script

A differenza delle procedure che trattiamo solitamente, questo script non si appoggia ad un RMM, andremo pertanto ad acquisire i parametri direttamente scrivendo la stringa di comando o inserendoli dopo aver eseguito lo script.

Il raccoglitori dei parametri di uno script Powershell è denominato param e al suo interno trovano posto i valori attesi e le loro configurazioni.

				
					param (
  [Parameter(Mandatory=$true,Position=0,
    HelpMessage="Path to csv file.")][string]$Path,
  [Parameter(Mandatory=$true,Position=1,
    HelpMessage="Separator used in the csv file.")][ValidateLength(1,1)][string]$SeparatorInFile,
  [Parameter(Mandatory=$true,Position=2,
    HelpMessage="Separator to use in the csv file.")][ValidateLength(1,1)][string]$NewSeparator
)

				
			

Nel nostro codice abbiamo posto, oltre al nome, alcune condizione e caratterizzazioni dei valori:

  • Mandatory – il parametro è obbligatorio se il l’argomento ha valore $true;
  • Position – indica la sequenza (0, 1, 2, etc.) dei parametri obbligatori, questo permette allo script di accettare gli argomenti senza che sia specificato il loro nome, ma semplicemente indicando i valori da inserire;
  • HelpMessage – indica un messaggio di aiuto su cosa richiesto dal parametro;
  • ValidateLength – accetta solo valori in un range di lunghezza, nel nostro caso il delimitatore è un singolo carattere, quindi il valore accettato deve essere minore o uguale ad 1, essendo il campo obbligatorio non può essere comunque vuoto.
LEGGI ANCHE -  Modificare da remoto la configurazione di base del power managment di windows

I parametri richiesta per la modifica del file sono:

  • Path – percorso dove si trova il file comprensivo del suo nome;
  • SeparatorInFile – separatore presente nel file;
  • NewSeparator – seperatore con cui sostituire l’esistente.

Il cuore del codice è molto essenziale e potrebbe essere eseguito con un’unica riga di codice utilizzando delle pipeline, tuttavia per una migliore leggibilità e pulizia siamo soliti non seguire questa strada.

				
					$LoadFileCSV = Get-Content -Path $Path
$NewFileCSV = $LoadFileCSV.Replace($SeparatorInFile,$NewSeparator)
$SaveFileName = $Path.Replace(".csv","_edited.csv")
Set-Content -Path $SaveFileName -Value $NewFileCSV

				
			

La Riga 1 salva il contenuto del file in una variabile utilizzando il cmdlet Get-Content, rendendone così facilmente fruibile il contenuto per qualsiasi operazione.

La Riga 2 utilizzando il metodo Replace sostituisce il valore cercato nel file con quello indicato.

La Riga 3, sempre con il metodo Replace, modifica il nome del file da salvare andando a sostituire, nel parametro di input del percorso, l’estensione del file con il suffisso e l’estensione del file.

Per finire la Riga 4 salva il contenuto ottenuto nella Riga 2 in un nuovo file con il nome creato alla Riga 3.

Per maggiori informazioni sull’uso e la realizzazione degli script di automazione leggi questo articolo e contattaci senza impegno.

I componenti distribuiti sono forniti senza alcuna garanzia. Non vi sono garanzie che il software soddisfi le vostre esigenze o sia esente da errori. In nessun caso gli sviluppatori saranno responsabili per eventuali danni.

I componenti proposti sono stati collaudati nel modo più esaustivo possibile e sono utilizzati in modo regolare in ambienti di produzione, durante il loro utilizzo non si sono verificate anomalie di funzionamento.

Articoli recenti
LEGGI ANCHE -  L’incubo di cercare contenuti in un file di tracciamenti
Archivi
Prossimi eventi

Non ci sono eventi imminenti.

Iscriviti alla nostra Newsletter
Seleziona lista (o più di una):
Manteniamo i tuoi dati privati e NON li condividiamo con terze parti. Per maggiori informazioni, consulta la nostra Privacy Policy.
Confermo di aver letto la Policy sul trattamento dei dati