Spis treści Skorowidz Poziom główny Poziom nadrzędny Wstecz Dalej Zadania Zadania Zadania ©

Podstawy pracy z arkuszem kalkulacyjnym

Interfejsy programistyczne arkuszy kalkulacyjnych

Niniejszy rozdział sygnalizuje istnienie pewnych koncepcji i technik, jednak stanowczo nie wystarcza, by je opanować.

  1. Arkusz kalkulacyjny a program
    • program jako makropolecenie arkusza
    • skoroszyt jako zestaw danych dla programu
  2. Notacja programistyczna
  3. Języki stosowane przy współpracy z arkuszami kalkulacyjnymi: Basic, Python, Java, C#, inne
  4. Obliczenia numeryczne (działamy na wartościach, zmienne przechowują wartości)
  5. Procedury i funkcje

    Przykłady dotyczą obliczania promienia hydraulicznego w kanale o przekroju trapezowym.

  6. Jak napisać własną funkcję arkusza kalkulacyjnego (Basic)
    Funkcja języka Basic postaci
    function nazwa(lista_argumentów) as typ_wyniku
        ...
        nazwa = wartość_wynikowa
    end function
    umieszczona w module programistycznym skoroszytu (Excel, OpenOffice Calc) lub w odpowiedniej kartotece konfiguracyjnej pakietu, np.
    function promienhyd(h as double, szerdna as double, nachylenie as double) as double
        if (h <= 0.0) then
            promienhyd = 0.0
        else
            pole = h*(szerdna  + h*nachylenie)
            obw = szerdna + 2*h*(1.0 + nachylenie^2)^0.5
            promienhyd = pole/obw
        endif
    end function
    może być wywoływana w formułach, np.
    =promienhyd(b2; $a$1; $a$2)
    na równi z funkcjami należącymi do standardowej biblioteki arkusza.
  7. Jak napisać własny program wykonywany przez arkusz kalkulacyjny (Basic, Python)
    1. Procedura języka Basic postaci
      sub nazwa(lista_argumentów)
        ...
      end function
      umieszczona w module programistycznym skoroszytu lub w kartotece konfiguracyjnej pakietu; np. dla Excela
      sub tablicuj()
          szer = 3.0
          nachyl = 2.0
          arkusz = Worksheets(1)
          a = arkusz.Cells(1,1).Value
          b = arkusz.Cells(2,1).Value
          n = arkusz.Cells(3,1).Value
          krok = (b-a)/n
          x = a
          arkusz.Cells(1, 3).Value = "h"
          arkusz.Cells(1, 4).Value = "R(h)"
          for i = 0 to n
              y = promienhyd(x, szer, nachyl)
              arkusz.Cells(i+2, 3).Value = x
              arkusz.Cells(i+2, 4).Value = y
              x = x + krok
          next i
      end sub
      lub dla OpenOffice Calc (ten sam język, inna biblioteka użytkowa)
      sub tablicuj()
          szer = 3.0
          nachyl = 2.0
          arkusz = thisComponent.Sheets.getByIndex(0)
          a = arkusz.getCellByPosition(0, 0).getValue()
          b = arkusz.getCellByPosition(0, 1).getValue()
          n = arkusz.getCellByPosition(0, 2).getValue()
          krok = (b-a)/n
          x = a
          arkusz.getCellByPosition(2, 0).setString("h")
          arkusz.getCellByPosition(3, 0).setString("R(h)")
          for i = 0 to n
              y = promienhyd(x, szer, nachyl)
              arkusz.getCellByPosition(2, i+1).setValue(x)
              arkusz.getCellByPosition(3, i+1).setValue(y)
              x = x + krok
          next i
      end sub
      wywoływana jako makropolecenie z menu programu lub przez kombinację klawiszy.
    2. Podprogram języka Python postaci
      def nazwa(lista_argumentów):
          ...
          return wartość_wynikowa
      
      umieszczony w module programistycznym skoroszytu OpenOffice Calc lub w konfiguracji pakietu i wywoływany jako makropolecenie (Excel nie rozumie Pythona), np.
      def promienhyd(h, szerdna, nachylenie):
          if h <= 0.0:
              return 0.0
          else:
              pole = h*(szerdna  + h*nachylenie)
              obw = szerdna + 2*h*(1.0 + nachylenie**2)**0.5
              return pole/obw
      
      def tablicuj():
          szer = 3.0
          nachyl = 2.0
          arkusz = XSCRIPTCONTEXT.getDocument().Sheets.getByIndex(0)
          a = arkusz.getCellByPosition(0,0).getValue()
          b = arkusz.getCellByPosition(0,1).getValue()
          n = arkusz.getCellByPosition(0,2).getValue()
          krok = (b-a)/n
          x = a
          arkusz.getCellByPosition(2, 0).setString("h")
          arkusz.getCellByPosition(3, 0).setString("R(h)")
          for i in range(n+1):
              y = promienhyd(x, szer, nachyl)
              arkusz.getCellByPosition(2, i+1).setValue(x)
              arkusz.getCellByPosition(3, i+1).setValue(y)
              x += krok
          return
      
  8. Jak napisać własny program dobierający się z zewnątrz do arkusza kalkulacyjnego (Python, inne)
    • Program w języku Python współpracujący z sesją arkusza, np. Excel, OpenOffice Calc — przykłady pokażemy, kiedy poduczymy się trochę więcej Pythona.
  9. Kiedy warto tego używać?
© Copyright 2008–2009 by Jan Jełowicki, Katedra Matematyki Uniwersytetu Przyrodniczego we Wrocławiu
janj@aqua.up.wroc.pl
http://karnet.up.wroc.pl/~jasj