Pchełki Powershell: xls na csv bez Excela

https://xpil.eu/0wv

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!

https://xpil.eu/0wv

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.