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.

Okno dialogowe konwersji. Dialog for conversion parameters.
Rys. 1: Okno dialogowe parametrów procesu 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. AOO CSV-1.1.1.oxt.

Plik dla LibreOffice można pobrać stąd. LibreOffice CSV-1.1.1.oxt.

Trzeci plik o nazwie Makecsv.oxt zawiera wyłącznie bibliotekę oprogramowania. Po zainstalowaniu tej biblioteki użytkownik może samodzielnie zdecydować o sposobie wywołania aplikacji. Ten plik jest dostępny tutaj makecsv.oxt..

Jeżeli chcecie Państwo pobrać plik, pamiętacie, że za taką możliwość odpowiada kliknięcie odnośnika (łącza) prawym przyciskiem myszki i wybranie z wyświetlonego menu pozycji w rodzaju „Zapisz element docelowy jako...” lub „Zapisz link jako...”. Kliknięcie lewym przyciskiem może spowodować inne działania niż pobieranie, gdyż przeglądarka może próbować bezpośredniego odczytania pliku. W szczególności, większość przeglądarek ma obecnie włączoną możliwość bezpośredniego odczytywania plików PDF.

Aby zainstalować oprogramowanie, należy wykonać następujące kroki:

Dopiero od tego momentu oprogramowanie jest dostępne do pracy. Jeżeli użyto pliku dedykowanego dla pakietu biurowego, można od razu korzystać z programu, wywołując polecenie z menu „Narzędzia → Dodatki → Utwórz plik CSV” albo klikając przycisk w pasku narzędziowym CSV.

Jeżeli zainstalowano wyłącznie bibliotekę, to sposób jej użycia opisuje rozdział poniżej.



Używanie oprogramowania.

Oprogramowanie może zostać wywołane doraźnie – przez wywołanie makra Makecsv – poleceniem: „Narzędzia → Makra → Wykonaj makro... → Moje makra → CSV → Module1 → Makecsv”.

Jeśli makro miałoby być często wykorzystywane, można jego wywołanie umieścić jako nową pozycję w wybranej liście poleceń menu albo przypisać mu nową ikonę w wybranym pasku narzędziowym, albo przypisać mu skrót klawiaturowy. W LibreOffice można ponadto pod tym kątem zmodyfikować menu kontekstowe.

Poniżej przedstawię, jak można to wykonać, tworząc nową pozycję w menu.

Najpierw należy podjąć decyzję, gdzie pojawi się nowe polecenie. Może to być całkowicie nowa lista w menu, zawierająca nową i w tym przypadku jedyną pozycję albo ta nowa pozycja zostanie dodana do jednej z istniejących już list. To zadanie można wykonać, wykorzystując polecenie „Narzędzia → Dostosuj...”. Należy użyć go w programie Calc. Otworzy ono odpowiadające za tę funkcję okno dialogowe. Okna te wyglądają inaczej w programach Apache OpenOffice i LibreOffice, lecz sposób realizacji jest analogiczny w obu programach.

Okno dialogowe "Dostosuj" w programie Apache OpenOffice.Okno dialogowe wywołane po naciśnięciu "Dodaj".
Rys.2: Okno dialogowe „Dostosuj” w Apache OpenOffice (4.1.6).
Okni dialogowe "Dostosuj" w programie LibreOffice.
Rys.3: Okno dialogowe „Dostosuj” w LibreOffice (6.1.5).
  1. Przejść do zakładki „Menu”.
  2. Utworzenie nowej listy w poleceniach menu (jeśli ten wariant ma zostać wykorzystany).
  3. Wybór listy, w której zostanie dodana nowa pozycja.
  4. Wybór położenia nowej pozycji. Nowe polecenie pojawi się powyżej zaznaczonego miejsca.
  5. Określenie skąd należy pobrać funkcjonalność nowego polecenia. W Apache OpenOffice otwarte zostanie nowe okno dialogowe zawierające rozwiniętą listę kategorii i wykaz poleceń dotyczących zaznaczonej kategorii.
  6. Na liście kategorii wybrać „Makra”. W Apache OpenOffice „Makra OpenOffice”.
  7. Otworzyć kontener „Moje makra”, znaleźć w nim bibliotekę CSV, w module „Module1” zaznaczyć makro „Makecsv”
  8. Nacisnąć symbol strzałki „w prawo”. W Apache OpenOffice nacisnąć przycisk „Dodaj”.
  9. Strzałki „w górę” i „w dół” pozwalają przemieścić dodaną pozycję w obrębie listy poleceń.

Od tego momentu nowa akcja została dodana do wybranej listy w menu. Przyciskiem „Zmień” (Apache OpenOffice) albo „Modyfikuj” (LibreOffice) można przypisać własną nazwę do polecenia.

O tym, jak dodać nową ikonę do wybranego paska narzędzi napisałem w oddzielnym opracowaniu, które można przeczytać tutaj https://yestok.pl/ooo/y53.php.

Okno dialogowe „Dostosuj” pozwala także na „podpięcie pod makro” wybranego skrótu klawiaturowego.

Należy pamiętać o tym, że aby oprogramowanie zadziałało, należy uruchomić makro o nazwie Makecsv.



Informacje pomocnicze dla użytkowników Apache OpenOffice i LibreOffice w systemie MacOs

System operacyjny Windows/Linux System operacyjny MacOs
Kliknięcie prawym przyciskiem myszki Control + kliknięcie
Klawisz CTRL (w skrótach klawiaturowych) Klawisz ⌘
F5 Nawigator Shift + ⌘ + F5
F11 Style i formatowanie ⌘ + T