Uwaga: przeglądasz tę stronę na urządzeniu o niewielkim ekranie (szerokość < 640px). Niektóre zamieszczone w artykule ilustracje i animacje mogą stać się nieczytelne po dopasowaniu ich do rozdzielczości tego ekranu.
Yestok.pl
Jerzy Moruś
© Wszystkie prawa zastrzeżone. Wykorzystanie całości serwisu lub jego fragmentów bez pisemnej zgody autora zabronione.
Konwersja obszaru arkusza na plik CSV
Opracowanie powstało w oparciu o wersję programu istniejącą w trakcie jego pisania, Libre Office: 6.1.5, Apache OpenOffice: 4.1.6.
Plik CSV jest ze swej istoty tekstowym odpowiednikiem danych zestawionych wcześniej w postaci tabelarycznej np. w programach arkuszy kalkulacyjnych lub w programach baz danych. Wiersze tych tabel nazywa się ogólnie rekordami. Każdą daną zawartą w rekordzie nazywa się polem. W każdym rekordzie występuje zawsze tyle samo pól i są one umieszczone w takiej samej kolejności. Plik CSV składa się z wierszy odpowiadających poszczególnym rekordom. Istnieją dwa rodzaje plików CSV. Pierwszy to plik, w którym na każdą zawartość pola jest przewidziana stała szerokość zapisu charakterystyczna dla konkretnego pola i wynikającą z tego stałą długością każdego wiersza. Odbiorca takiego pliku musi znać strukturę rekordu, aby prawidłowo zinterpretować dane. Drugi to plik, w którym każda zawartość pola zajmuje tylko tyle miejsca, ile jest niezbędne do jej przedstawienia. Aby rozpoznać zakończenie pola, stawiany jest po nim znak specjalny, nazywany separatorem pola. Znak separatora nie jest stawiany po ostatniej wartości w wierszu, jego funkcję spełnia znacznik końca wiersza. Wiersze takiego zapisu są zmiennej długości. Odbiorca pliku nie musi znać jego struktury, wystarczy znajomość kolejności pól i zastosowany znak separatora.
Pliki CSV są zazwyczaj wykorzystywane podczas migracji danych między różnymi systemami ich przechowywania i przetwarzania.
Niniejszy zestaw makroinstrukcji funkcjonuje jako kompletny program i służy do wykonania pliku CSV na podstawie dowolnego, wyznaczonego przez użytkownika, obszaru, w dowolnym arkuszu otwartego skoroszytu. Program można uruchomić wyłącznie w środowisku arkusza kalkulacyjnego Calc. Arkusz musi być już wcześniej utworzony i zapisany na dysku. Oprogramowanie tworzy drugi (z wymienionych powyżej) rodzaj pliku CSV, czyli plik z separatorami pól.
Po uruchomieniu oprogramowania pojawi się okno dialogowe pozwalające określić parametry konwersji.
Powyższe okno dialogowe oraz komunikaty programu zależą od zastosowanego języka interfejsu, czyli lokalizacji oprogramowania Apache OpenOffice lub LibreOffice. Jeśli lokalizacją nie jest Polska (pl), to wyświetlana jest wersja angielska.
Wybór obszaru, który będzie podlegał przekształceniu w plik CSV, polega na wskazaniu: nazwy arkusza, lewej górnej komórki deklarowanego obszaru, podanej jako tradycyjny adres komórki (np. D12), liczby wierszy oraz liczby kolumn tworzących obszar. Z tymi danymi związany jest także wybór separatora pola. Wybór ten jest możliwy wyłącznie z rozwijanej listy.
Przed rozpoczęciem konwersji procedura weryfikuje zasięg obszaru wskazanego przez użytkownika. Obszar zawsze zaczyna się w komórce podanej jako początkowa ale wewnątrz obszaru wynikającego z liczby wierszy i kolumn odnajdywana jest ostatnia użyta kolumna oraz ostatni użyty wiersz. To one wyznaczają faktycznie zastosowany obszar i zapobiegają generowaniu niepotrzebnych zapisów.
Użytkownik może podać nazwę pliku, pod jaką ma zostać zapamiętana realizacja zadania oraz wskazać lokalizację pliku wynikowego. Jeśli tego nie zrobi, nazwą pliku zostanie nazwa pliku macierzystego uzupełniona o rozszerzenie CSV, natomiast lokalizacją pliku będzie to samo miejsce, w którym znajduje się plik macierzysty.
W nazwie pliku nie można wykorzystać znaków specjalnych „/*?><!$|\”. Jeśli takie wystąpią, algorytmy zamienią je na znak podkreślnika („_”). Ponadto przed zatwierdzeniem nazwy nastąpi sprawdzenie, czy taka nazwa pliku już nie występuje w docelowej lokalizacji. Jeśli tak by było, to zaproponowana nazwa zostanie zmieniona przez uzupełnienie jej na końcu o znak podkreślnika z kolejną liczbą wyróżniającą plik.
Ostatnim wyborem jest typ tworzonego pliku CSV. Pierwszy, nazwany „Wierszami”, tworzy tradycyjnie rozumiany odpowiednik tabeli. Czyli ma powstać tyle wierszy tekstu z ilu wierszy składa się obszar, a każdy wiersz ma zawierać tyle wartości, ile wynika z zaakceptowanych kolumn.
Przed wygenerowaniem pliku procedura dodatkowo sprawdza, czy w zadanym obszarze znajdują się w ogóle jakieś dane. Jeżeli nie ma żadnych – proces jest kończony. Jeśli wystąpi choćby jedna wartość generowane są wszystkie wiersze od pierwszego do ostatniego nawet wtedy gdy nie zawierają żadnych wartości.
Drugi typ tworzonego pliku CSV nazwałem „Elementami”. Ten typ pliku powstaje przy założeniu, że pierwszy wiersz obszaru zawiera nagłówki kolumn, a pierwsza kolumna zawiera opisy wierszy. Elementem jest każda wartość znajdująca się w zadeklarowanym obszarze poza pierwszym wierszem i pierwszą kolumną. W tym procesie następuje przekształcenie dwuwymiarowej tabeli w jednostkowe zapisy charakteryzujące każdy element. Plik może zostać utworzony w jednym z dwóch wariantów różniących się kolejnością danych. W pierwszym wariancie każdy wiersz pliku zawiera: zawartość nagłówka, zawartość opisu wiersza i odpowiadający im element. W drugim wariancie najpierw umieszczany jest opis wiersza a po nim zawartość nagłówka. Każdy wiersz takiego pliku zawiera tylko trzy wartości a plik może zawierać co najwyżej (n-1)∙(k-1) zapisów, gdzie „n” jest liczbą zadeklarowanych wierszy a „k” – liczbą zadeklarowanych kolumn. Co najwyżej dlatego, że algorytm nie tworzy wiersza, gdy pozycja elementu jest „pusta”. I w tym przypadku procedura najpierw sprawdza czy w obszarze elementów znajdują się jakieś dane.
Ponadto program sprawdza czy w obszarze nagłówka i kolumny opisowej nie brakuje jakichś pozycji. Jeśli tak by było wyświetlany jest komunikat informujący o tym. Można, jeśli to konieczne, przerwać proces i uzupełnić brakujące dane.
Pliki tego typu mogą zawierać bardzo dużo wierszy. Gdyby zadeklarowany obszar obejmował 1001 wierszy i 16 kolumn to teoretycznie zostanie wytworzonych 15000 wierszy. Gdyby obszar zawierał 50% pustych elementów, to i tak powstałoby 7500 wierszy. Dlatego przed wykonaniem zadania obliczany jest szacunkowy czas jego wykonania. Jeśli przekracza on 2'30'' pojawia się komunikat informujący o przewidywanym czasie realizacji. Użytkownik podejmuje wówczas decyzję o jej kontynuowaniu lub zaniechaniu wykonania.
Pliki są zapisywane w kodowaniu UTF-8.
Instalacja oprogramowania.
Oprogramowanie zostało przygotowane do rozpowszechniania w postaci trzech plików z rozszerzeniem „oxt” każdy. Dwa z nich, oprócz samej biblioteki, zawierają procedurę automatycznej instalacji paska narzędziowego pozwalającego wywołać makro i dedykowanego polecenia wywołującego makro, umieszczonego w menu podstawowym „Narzędzia” jako element podmenu „Dodatki”. Te dwa pliki są przygotowane oddzielnie dla pakietu Apache OpenOffice (od wersji 4.x) i LibreOffice. Należy pobrać wersję właściwą dla używanego pakietu biurowego i uruchomić procedurę opisaną w dalszej części.
Plik dla Apache OpenOffice można pobrać stąd: