Pewnego dnia (tj. kilka tygodni temu), poszukiwałem
wśród tysięcy stron www jakiegoś wzornika kolorów RAL. Wreszcie trafiłem! Nawet tabela
na stronie była tak zbudowana, że wydawało mi się proste skopiowanie jej i
wczytanie do Excel-a.
Po zapisaniu zawartości tabeli do pliku TXT, rozpocząłem
importowanie go do Excel-a. Okazało się to trudne (czytaj: nie możliwe), z
powodu nie właściwej budowy pliku tekstowego. Skopiowane dane z Clipboard-u do
Notepad-a zupełnie pomieszały się, dane z fragmentami tabeli z kodem website. Pomyślałem
że trochę po klikam (delete, arrow, enter, itd.) w Notepad-dzie, żeby poukładać
pola w rekordy, szybko poprawię plik i po sprawie. Jednak po kilkudziesięciu
razach odechciało mi się tego bez sensownego klikania. Plik składa się z 1720
wierszy. Zostawiłem tę sprawę na lepsze czasy.
Jako że to jest zadanie jednorazowe, zastosowałem
PowerShell. Dla nie zorientowanych: PowerShell jest to narzędzie do tworzenia
skryptów, działa na platformie .Net. Dzięki temu można wykorzystać praktycznie
wszystkie zasoby komputera, nawet można stworzyć GUI dla skryptu. Jest już
dołączone do Windows 7 (do innych Windows być może trzeba je sobie
zainstalować). Z PowerShell jest dodane proste środowisko PowerShell ISE, które
bardzo ułatwia pisanie skryptu.
Zadanie podzieliłem na cztery skrypty (4 zadania)
które kolejno generują odpowiednie pliki tekstowe, żeby nie komplikować
problemu w jednym skrypcie (ponieważ to mój pierwszy kontakt z PowerShell). Ostatni plik wynikowy jest plikiem CSV który
zawiera interesujące mnie informacje. Skrypty są jednorazowego zastosowania,
więc nie mają żadnego interfejsu.
Praca polegała na wielokrotnym uruchamianiu
(testowaniu) skryptu na małym fragmencie orginalnego pliku, aż efekt był
zadowalający, wtedy wykonywałem go na orginalnym pliku. Następnie przechodziłem
do pisania następnego skryptu, aż do całkowitego rozwiązania problemu.
|
Fragment pliku przed edycją (stan początkowy). |
Skrypt „Kolory3.ps1”
dzieli wiersze w miejscu wystąpienia znaku „#” na dwa wiersze, tylko w
przypadku gdy ten znak nie jest znakiem pierwszym w wierszu (gdy tylko znak „#”
występuje w środku wiersza). Plik wynikowy zawiera istotne informacje w każdym
osobnym wierszu.
|
Plik po dzieleniu wierszy. |
Skrypt „UsuwaniePustychWierszy1.ps1”
usuwa wszystkie znaki niepożądane, czyli wszystkie znaki o kodach mniejszych od
ascii 32.
|
Plik po usunięciu znaków nie pożądanych. |
Skrypt „UsuwanieTabulatora.ps1”
usuwa wszystkie tabulacje z pliku.
|
Plik bez tabulacji. |
Skrypt „UtworzeniePlikuCSV.ps1”
tworzy właściwy, formatuje ostateczny plik wynikowy CSV, zawierający tylko
potrzebne mi informacje, w postaci którą łatwo wczytam do Excel-a. Plik teraz zawiera
214 wierszy.
|
Plik CSV przygotowany dla Excel-a. |
Pliki skryptów są dostępne tutaj: Kolory skrypty.
Komentarze
Prześlij komentarz