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:
- 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.
- 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:
-
- Uruchamiamy terminal PowerShell w trybie Administratora
- Wpisujemy:
Install-Module -Name ImportExcel
- Potwierdzamy kilka zapytań instalatora ("Czy aby na pewno jesteś pewien, blablabla...")
- 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!
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.