Technologie informacyjne: Excel i Python

Podobne dokumenty
Makropolecenia w Excelu

Makropolecenia w PowerPoint Spis treści

Automatyzowanie zadan przy uz yciu makr języka Visual Basic

Przygotowanie własnej procedury... 3 Instrukcja msgbox wyświetlanie informacji w oknie... 6 Sposoby uruchamiania makra... 8

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Technologie informacyjne: Arkusz kalkulacyjny

Nagrywanie Makr. Na karcie Dostosowywanie Wstążki zaznaczamy kartę Deweloper.

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Zastanawiałeś się może, dlaczego Twój współpracownik,

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Aplikacje w środowisku VBA. Visual Basic for Aplications

AUTOMATYZACJA PRACY Z UŻYCIEM MAKR. Tom XII NPV WSP.KORELACJI ROZKŁ.EXP JEŻELI COS KOMÓRKA VBA DNI.ROBOCZE ILOCZYN LOG SUMA CZY.

Makra VBA w Excelu dla początkujących

LABORATORIUM 6: ARKUSZ MS EXCEL JAKO BAZA DANYCH

Wykresy i interfejsy użytkownika

Wprowadzenie do Python

Praktyczny Excel. Sprytne makra

Część I: Przypisanie makr do obiektu (przycisku).

Technologie informacyjne: Excel i VBA

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Excel z elementami VBA w firmie.

Ćwiczenie 1 Obsługa makr

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Utworzenie interfejsu graficznego za pomocą formularza użytkownika w VBA

Co nowego w Invest for Excel 3.4

Informatyka w Zarządzaniu

Praktyczny Excel. Sprytne makra

VBA praca z makrami w Excelu: piszemy kod! Ulepszamy program! 0. Parę uwag o samym edytorze

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Instrukcja importu dokumentów z programu Fakt do programu Płatnik

Część I: Excel - powtórka

Visual Basic for Applications Wprowadzenie, makra

Excel 2016 PL w biurze i nie tylko / Sergiusz Flanczewski. Gliwice, cop Spis treści

Instalacja NOD32 Remote Administrator

ZASTOSOWANIE ARKUSZA KALKULACYJNEGO EXCEL DO ANALIZY ABC/XYZ

VBA praca z makrami w Excelu

Excel. Tworzenie zaawansowanych aplikacji.

Dlaczego stosujemy edytory tekstu?

Instrukcja. importu dokumentów. z programu Fakt do programu Płatnik. oraz. przesyłania danych do ZUS. przy pomocy programu Płatnik

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Materiały dodatkowe. Raspberry Pi

MentorGraphics ModelSim

Działki Przygotowanie organizacyjne

Dodawanie wzorca graficznego do programów linii InsERT GT

BIBLIOTEKA NUMPY, CZĘŚĆ 1

VBA ZAJĘCIA NR 7! praca z plikami (kontynuacja zajęć 6)

Instrukcja instalacji i obsługi makra Excel_Table w wersji 10

Program współpracuje z : Windows XP, Powerdraft 2004, v8, XM, Microstation 2004, v8, XM.

Użycie Visual Basic for Applications ("VBA")

ZASTOSOWANIE ARKUSZA KALKULACYJNEGO EXCEL DO ANALIZY ABC/XYZ

7.9. Ochrona danych Ochrona i zabezpieczenie arkusza. Pole wyboru

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Trik 1 Edycja wykresu bezpośrednio w dokumencie Worda

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Ekonometria. Regresja liniowa, współczynnik zmienności, współczynnik korelacji liniowej, współczynnik korelacji wielorakiej

Arkusze kalkulacyjne i VBA

Piotr Dynia. PowerPivot. narzędzie do wielowymiarowej analizy danych

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium przyrządów wirtualnych. Ćwiczenie 3

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

Curtis D. Frye. Microsoft Excel Krok po kroku. Przekład: Leszek Biolik

Włączanie/wyłączanie paska menu

Wykład 2: Arkusz danych w programie STATISTICA

Zakład Systemów Rozproszonych

SPIS ILUSTRACJI, BIBLIOGRAFIA

Rys. 1. Aktywne linki będą wstawiane za pomocą rozwijanej listy

Microsoft PowerPoint Poziom Zaawansowany PROGRAM SZKOLENIOWY. Plan szkolenia zawiera: Microsoft Excel Poziom Zaawansowany

VinCent Administrator

Tematy lekcji informatyki klasa 4a luty/marzec 2013

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Wymagania edukacyjne na poszczególne oceny. z przedmiotu Informatyki. w klasie VI

Piotr Dynia. PowerPivot. narzędzie do wielowymiarowej analizy danych

Zadanie. Menu Plik niech posiada dwie pozycje: Tekstowy i Excel, a każda z nich niech posiada dwie pozycje Otwórz i Zapisz, patrz rys. 2.

Uniwersytet Śląski w Katowicach str. 1 Wydział Matematyki Fizyki i Chemii, Instytut Matematyki

Uniwersytet Śląski w Katowicach str. 1 Wydział Matematyki Fizyki i Chemii Instytut Matematyki

M a k r a i d o d a t k o w e f o r m a n t y

Rysunek 8. Rysunek 9.

Edytor materiału nauczania

ABC 2002/XP PL EXCEL. Autor: Edward C. Willett, Steve Cummings. Rozdział 1. Podstawy pracy z programem (9) Uruchamianie programu (9)

mgr inż. Adam Pinkowski

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

tutaj Poniższe makro nie zadziała dla pakietu Open lub Libre Office! O co chodzi?

Instrukcja instalacji

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

9.1. Arkusz kalkulacyjny czy pakiet obliczeniowy 9.2. MathCad - cechy 9.3. MathCad - funkcje 9.4. MathCad funkcje 9.5. Excel 9.6. Excel programowanie

Visual Basic w programie Excel

Instalacja i opis podstawowych funkcji programu Dev-C++

5.2. Pierwsze kroki z bazami danych

Temat: Organizacja skoroszytów i arkuszy

Trik 1 Podsumowanie kwot występujących w co drugim wierszu

VBA praca z makrami w Excelu

Visual Basic w programie Excel dla Windows

ZESTAW LABORATORYJNY I ZESTAW FARMACEUTYCZNY : Instrukcja instalacji

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Podstawy technologii WWW

Instrukcja obsługi Nowego Punktatora

Programowanie obiektowe

Transkrypt:

Wrocław, 25.05.2017 Technologie informacyjne: Excel i Python Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz

Dzisiaj na zajęciach... Makra w pakiecie Excel, część 2: język Python. 1/30

Biblioteka xlwings Biblioteka xlwings 2/30

Jak zdobyć? Najłatwiej korzystając z dystrybucji Pythona o nazwie Anaconda: https://www.anaconda.com/download/ Szczególnie polecam aktualizację wersji do Anaconda 5.1 dla Pythona 3.6. Biblioteka xlwings 3/30

Dlaczego Anaconda? posiada graficzną aplikację do uruchamiania różnych narzędzi (na przykład Jupyter Notebook i Spyder) oraz wirtualnymi środowiskami (każdy projekt może mieć swoje własne wersje zależności, nieprzeszkadzając pozostałym aplikacjom), posiada skompilowaną wersję xlwings 0.11.8, która dostarcza funkcjonalności wykorzystywanej na zajęciach, do obliczeń wykorzystuje bibliotekę Intel MKL nawet kilkadziesiąt razy przyśpieszającą niektóre obliczenia (źródło: https://dpinte.wordpress.com/2010/03/ 16/numpymkl-vs-matlab-performance/), działa na wszystkich głównych systemach operacyjnych. Biblioteka xlwings 4/30

Pobieranie xlwings Po instalacji dystrybucji Anaconda uruchamiamy Anaconda Command Prompt i wpisujemy conda install xlwings lub uruchamiamy Anaconda Navigator i na liście dostępnych pakietów odnajdujemy xlwings i klikamy zainstaluj. Jeśli ścieżki i środowisko są standardowe, xlwings zainstaluje się do C:\Anaconda\libs\site-packages\xlwings Biblioteka xlwings 5/30

Aktywowanie makr Pythona w Excel Załóżmy, że makro mamy zapisane w pliku makro.py i chcemy uruchomić w nim funkcję moje_makro. Jak to zrobić? 1. Aktywujemy kartę Deweloper (klikamy kartę Plik, potem Opcje, Dostosowanie wstążki w obszarze Karty główne zaznaczamy Deweloper). 2. Na karcie Deweloper klikamy Visual Basic, co otwiera edytor makr. 3. W edytorze wybieramy kolejno File oraz Import File..., po czym wskazujemy na plik xlwings.bas znajdujący się w katalogu instalacji xlwings (domyślnie C:\Anaconda\libs\site-packages\xlwings\xlwings.bas). 4. W edytorze makr klikamy Insert oraz Module. Biblioteka xlwings 6/30

Błędy? To była jedyna metoda do wersji 0.10.x. Od wersji 0.11.0 do 0.11.7 została zastąpiona inną metodą, ale w wersji 0.11.8 (13 maja 2018) znów działa dodawania xlwings.bas, więc jest to metoda najbardziej uniwersalna. Biblioteka xlwings 7/30

Po nowemu W Anaconda Command Prompt powinna być dostępna komenda xlwings. Tą komendą możemy: stworzyć pusty plik na projekt ze wszystkim przygotowanym (stara metoda) xlwings quickstart nazwa -s stworzyć pusty plik na projekt ze wszystkim przygotowanym (nowa metoda) xlwings quickstart nazwa -s zainstalować lub zaktualizować dodatek do excela xlwings addin install/update/remove/status Biblioteka xlwings 8/30

Uruchamianie makra W miejsce kodu wklejamy Sub MojeMakro() RunPython("import makro; makro.moje_makro()") End Sub Wszystko zapisujemy, zamykamy edytor makr i następnie zapisujemy dokument jako plik z rozszerzeniem xlsm (Excel z obsługą makr). Biblioteka xlwings 9/30

Uruchamianie makra W miejsce kodu wklejamy Sub MojeMakro() RunPython("import makro; makro.moje_makro()") End Sub Wszystko zapisujemy, zamykamy edytor makr i następnie zapisujemy dokument jako plik z rozszerzeniem xlsm (Excel z obsługą makr). Aby uruchomić makro, klikamy na przycisk Makra w zakładce Deweloper, następnie z listy dostępnych makr wybieramy to zadanej nazwie (na przykład MojeMakro). Biblioteka xlwings 9/30

Uwagi Excel jest bardzo mocno skojarzony z VBA trzeba stworzyć makro VBA, które jest pośrednikiem i uruchamia funkcję RunPython. Plik Pythona oraz dane Excela powinny być w tym samym katalogu. Można to objeść: 1. instalując moduł Pythona w środowisku (do odpowiedniego katalogu site-packages), 2. ustawiając zmienną sys.path (dodając ścieżkę do pliku.py), 3. wklejając zawartość pliku jako napis do funkcji RunPython. Wersja pliku xlwings.bas musi odpowiadać wersji biblioteki xlwings zainstalowanej w systemie. Biblioteka xlwings 10/30

Co gdy nie odpowiada? Może się tak stać na przykład w przykładach z listy zadań. Jeśli xlwings.bas nie odpowiada wersji biblioteki, otwieramy excela, usuwamy moduł i dodajemy nowy. Reszta powinna zostać bez zmian. Biblioteka xlwings 11/30

Domyślne środowisko Domyślnie xlwings zapisuje log w katalogu %APPDATA%\xlwings_log.txt. Istnieje możliwość ustawienia tej oraz innych opcji. Więcej informacji w dokumentacji: http://docs.xlwings.org/en/stable/vba.html. Biblioteka xlwings 12/30

Podstawy Istnieją trzy możliwości komunikacji: 1. wywoływanie Excela z poziomu Pythona, 2. wywoływanie Pythona z poziomu Excela, 3. tworzenie funkcji użytkownika (formuł). Biblioteka xlwings 13/30

Podstawy Istnieją trzy możliwości komunikacji: 1. wywoływanie Excela z poziomu Pythona, 2. wywoływanie Pythona z poziomu Excela, 3. tworzenie funkcji użytkownika (formuł). Na początku skryptu umieszczamy import: import xlwings as xw from xlwings import Book, Sheet, Range Biblioteka xlwings 13/30

Nawiązanie połączenia Nawiązywanie połączenia odbywa się poprzez użycie klasy Book Biblioteka xlwings 14/30

Nawiązanie połączenia Nawiązywanie połączenia odbywa się poprzez użycie klasy Book: Book() tworzy nowy skoroszyt, Book( Zeszyt1 ) łączy się z istniejącym, otwartym, niezapisanym skoroszytem, Book( plik.xlsx ) łączy się z istniejącym, otwartym, zapisanym skoroszytem, Book(r ścieżka ) łączy się z istniejącym, nieotwartym, zapisanym skoroszytem, Book.caller() łączy się ze skoroszytem, który uruchomił funkcję lub makro. Biblioteka xlwings 14/30

Nawiązanie połączenia Nawiązywanie połączenia odbywa się poprzez użycie klasy Book: Book() tworzy nowy skoroszyt, Book( Zeszyt1 ) łączy się z istniejącym, otwartym, niezapisanym skoroszytem, Book( plik.xlsx ) łączy się z istniejącym, otwartym, zapisanym skoroszytem, Book(r ścieżka ) łączy się z istniejącym, nieotwartym, zapisanym skoroszytem, Book.caller() łączy się ze skoroszytem, który uruchomił funkcję lub makro. Do tworzenia formuł używamy dekoratora func, podając go przed nazwą funkcji. Biblioteka xlwings 14/30

Typowe makro Excel->Python import xlwings as xw from xlwings import Book def nazwa ( ) : wb = Book. c a l l e r ( ) # kod Biblioteka xlwings 15/30

Typowe makro Python->Excel import xlwings as xw from xlwings import Book wb = Book ( " p l i k " ) # kod Biblioteka xlwings 16/30

Typowe makro Formuła import xlwings as xw from xlwings import Book @xw. func def nazwa ( argumenty ) : # kod return wynik Biblioteka xlwings 17/30

Arkusze Do operacji na arkuszach służy klasa Sheet, dostępna pod wb.sheets. wb.sheets zwraca listę wszystkich arkuszy, wb.sheets.add( nazwa ) tworzy nowy arkusz. wb.sheets["nazwa"] wybiera arkusz o zadanej nazwie, wb.sheets[1] wybiera arkusz o zadanym numerze, Sheet(...).activate() aktywuje arkusz, Sheet(...).delete() kasuje arkusz (zgłasza wyjątek, gdy arkusz nie istnieje), Sheet(...).name pozwala sprawdzić lub ustawić nazwę, Sheet(...).clear() czyście zawartość i formatowanie arkusza, Biblioteka xlwings 18/30

Zakresy Do operacji na zakresach służy klasa Range, dla konkretnego arkusza sheet. Range( A1 ) wybiera komórkę A1 aktywnego arkusza, Range((1, 1)) wybiera komórkę A1 aktywnego arkusza, Range( A1:C5 ) wybiera zakres aktywnego arkusza, Range((1, 1), (3, 5)) wybiera zakres aktywnego arkusza, sheet.range( A1 ) wybiera komórkę A1 arkusza, sheet.range((1, 1)) wybiera komórkę A1 arkusza, sheet.range( A1:C5 ) wybiera zakres arkusza, sheet.range((1, 1), (3, 5)) wybiera zakres arkusza, zakres.current_region pozwala rozszerzyć zaznaczenie. Biblioteka xlwings 19/30

Co z zakresem? Z zakresu możemy wyciągnąć lub wstawić dane: zakres.value wyciąga wartości, zakres.value = x podstawia wartości. Domyślnie, xlwings wydobywa: float dla komórek liczbowych, str dla komórek tekstowych, datetime dla komórek z datą, None dla komórek pustych, listę dla wiersza, listę list dla kolumny lub tabeli. Biblioteka xlwings 20/30

Sterowanie konwersją Dla zakresów: Range (... ). options ( opcje konwersji ). value Dla argumentów funkcji i wartości zwracanych: @xw. func @xw. arg ( x, opcje d l a argumentu x ) @xw. arg ( y, opcje d l a argumentu y ) @xw. r e t ( opcje d l a return ) def dodaj ( x, y ) : return x + y Biblioteka xlwings 21/30

Przydatne opcje numbers=int traktuj liczbę jako całkowitą, dates=datetime.date używaj date zamiast datetime, empty= NA używaj NA zamiast None jako wartości puste, transpose=true transponuj dane dict potraktuj 2 kolumny lub 2 wiersze jako party klucz-wartość, np.array zwróć tablicę NumPy zamiast list, pd.series zwróć szereg Pandas zamiast list, pd.dataframe zwróć ramkę danych Pandas zamiast listy list. Więcej o konwersji w dokumentacji: http://docs.xlwings.org/en/stable/converters.html. Biblioteka xlwings 22/30

Rysunki Istnieje możliwość tworzenia rysunków za pośrednictwem biblioteki Matplotlib (http://matplotlib.org/gallery.html). import m a t p l o t l i b. pyplot as p l t from xlwings import Book f i g u r e = p l t. f i g u r e ( ) # kod : wstaw rysunek do a k t u a l n e g o okna M a t p l o t l i b sheet = Book ( ). sheets [ 0 ] sheet. p i c t u r e s. add ( f i g, name=" MojWykres ", update=true ) Biblioteka xlwings 23/30

Sporo więcej Na przykład możemy z poziomu Pythona wywołać makro VBA, mamy narzędzia do zarządzania środowiskiem, dzięki py2exe możemy zamknąć Pythona razem z potrzebnymi bibliotekami w jednym pliku wykonywalnym (w celu dystrybucji),... Biblioteka xlwings 24/30

Sporo więcej Na przykład możemy z poziomu Pythona wywołać makro VBA, mamy narzędzia do zarządzania środowiskiem, dzięki py2exe możemy zamknąć Pythona razem z potrzebnymi bibliotekami w jednym pliku wykonywalnym (w celu dystrybucji),... Więcej informacji można znaleźć na stronie http://xlwings.org/. Biblioteka xlwings 24/30

Analiza kodu makra from datetime import datetime from xlwings import Book def c l e a r _ d a t a ( ) : sheet_name = " K l i e n t " output = " KlientC " wb = Book. c a l l e r ( ) t r y : wb. sheets [ output ]. detele ( ) except : pass wb. sheets. add ( output, a f t e r =sheet_name ) sheet = wb. sheets. a c t i v e #... Biblioteka xlwings 25/30

Analiza kodu makra #... t a b l e = wb. sheets [ sheet_name ]. range ( A1 ). c u r r e n t _ r e g i o n [ names, dates, i d s ] = t a b l e. options ( transpose=true ). value names = names [ 1 : ] dates = dates [ 1 : ] i d s = i d s [ 1 : ] #... Biblioteka xlwings 26/30

Analiza kodu makra #... f i r s t n a m e s = [ ] surnames = [ ] for data i n names : p a r t s = [ part. c a p i t a l i z e ( ) for part i n data. s p l i t ( " " ) i f part ] f i r s t n a m e s. append ( " ". j o i n ( p a r t s [ : 1 ] ) ) surnames. append ( p a r t s [ 1]) dates = [ datetime. s t r p t i m e ( data, %d %m %Y ) for data i n dates ] #... Biblioteka xlwings 27/30

Analiza kodu makra #... Range ( output, A1 : D1 ). value = [ " Imie ", " Nazwisko ", " Data ", "Numer" ] sheet. range ( A1 : D1 ). c o l o r = (150, 150, 150) sheet. range ( A2 ). options ( transpose=true ). value = \ f i r s t n a m e s sheet. range ( B2 ). options ( transpose=true ). value = \ surnames sheet. range ( C2 ). options ( transpose=true ). value = \ dates sheet. range ( D2 ). options ( transpose=true ). value = \ i d s sheet. range ( A1 ). c u r r e n t _ r e g i o n. a u t o f i t ( ) Biblioteka xlwings 28/30

W następnym odcinku... Niespodzianka? :) Biblioteka xlwings 29/30

Pytania? Biblioteka xlwings 30/30