Pchełki Powershell: xls na csv bez Excela

Dziś coś z dziedziny komputerów, czyli jak automatycznie zamienić plik XLS (albo XLSX) na CSV bez konieczności instalowania Excela.

Zakładam tu, że dysponujemy komputerem z jakimś w miarę świeżym systemem Windows (7 / 8 / 10 / Server) oraz zainstalowanym tam interpreterem PowerShell w wersji co najmniej 5.0.

Klasycznie konwersję z xls na csv automatyzuje się tak, że tworzy się na chwilę instancję obiektu Excel.Application (za pomocą technologii COM), a następnie nakazuje się temu Excelowi otworzyć plik XLSX i zaraz potem zapisać go w formacie CSV.

Rozwiązanie takie ma dwie zasadnicze wady:

  1. Prędkość. Jeżeli plik xls ma 2 kilobajty, uruchamianie wielkiego jak krowa Excela w celu zamiany xls na csv to jakby koparką dłubać w nosie. Da się, ale trochę to zajmuje.
  2. Konieczność „mania” Excela – a to oznacza licencję, poza tym nie każdy chce mieć zainstalowanego Office-a na serwerze.

Czy można zatem inaczej?

Otóż – można!

Portal PowershellGallery oferuje moduł ImportExcel. Można go zainstalować u siebie w następujący sposób:

    1. Uruchamiamy terminal PowerShell w trybie Administratora
    2. Wpisujemy: Install-Module -Name ImportExcel
    3. Potwierdzamy kilka zapytań instalatora („Czy aby na pewno jesteś pewien, blablabla…”)
    4. Podziwiamy!

Od tej bowiem pory możemy zrobić tak:

Import-Module ImportExcel
ConvertFrom-ExcelSheet "plik.xls" "c:\jakis\folder"

I już po chwili zobaczymy plik csv w podanym folderze docelowym.

Metoda ta jest, na oko, około 6-8 razy szybsza niż wspomniana na początku metoda COM. No i nie wymaga licencji na Office…

Smacznego!


Dodaj komentarz

avatar
  Subscribe  
Powiadom o
%d bloggers like this: