czwartek, 13 marca 2025

Jak stworzyłem kalkulator skanowania w Excelu – krok po kroku

W ramach testu poprosiłem ChatGPT o3 mini-high o stworzenie kalkulatora do obliczania rozdzielczości skanów. Prompt był następujący:

stwórz mi kalkulator do obliczenia rozdzielczości skanów w zależności od wybranych parametrów tj. rozmiar skanowanego obiektu od B5 do A0, oraz typu formatu plików tj. JPG, JPG2000, JPG XL, TIFF. Najlepiej aby działał w Excelu. 

o3 mini zaproponował Python i bibliotekę openpyxl. Poprosiłem go też o instrukcję działania krok po kroku. 


Krok 1. Przygotowanie środowiska

Co było potrzebne?
Na początek upewniłem się, że mam zainstalowanego Pythona. Następnie zainstalowałem bibliotekę openpyxl, która umożliwia tworzenie i modyfikację plików Excel bezpośrednio z kodu. W terminalu wpisałem:

nginx
pip install openpyxl

Krok 2. Utworzenie pliku skryptu

Praca z edytorem tekstu
Otworzyłem Notatnik (lub dowolny inny edytor, np. VSCode) i wkleiłem do niego cały kod, który miał stworzyć kalkulator. Zdecydowałem się na nazwę pliku generuj_kalkulator.py. Poniżej znajduje się kod, który później został zapisany i uruchomiony:

python
from openpyxl import Workbook from openpyxl.worksheet.datavalidation import DataValidation # Utwórz nowy skoroszyt i wybierz aktywny arkusz wb = Workbook() ws = wb.active ws.title = "Kalkulator" # -------------------------- # Tabela rozmiarów papieru (umieszczona w komórkach A1:C7) # -------------------------- ws["A1"] = "Format" ws["B1"] = "Szerokość [mm]" ws["C1"] = "Wysokość [mm]" # Dane formatów: A0, A1, A2, A3, A4, B5 formats = [ ["A0", 841, 1189], ["A1", 594, 841], ["A2", 420, 594], ["A3", 297, 420], ["A4", 210, 297], ["B5", 176, 250] ] for i, row in enumerate(formats, start=2): ws.cell(row=i, column=1, value=row[0]) ws.cell(row=i, column=2, value=row[1]) ws.cell(row=i, column=3, value=row[2]) # -------------------------- # Sekcja wprowadzania parametrów przez użytkownika # -------------------------- ws["E1"] = "Wybierz format:" # Etykieta w E1 ws["F1"] = "" # Komórka F1 – lista rozwijana ws["E2"] = "DPI:" # Etykieta w E2 ws["F2"] = 300 # Domyślna wartość DPI w F2 # Utwórz walidację danych (lista rozwijana) dla komórki F1 dv = DataValidation(type="list", formula1='"A0,A1,A2,A3,A4,B5"', allow_blank=False) ws.add_data_validation(dv) dv.add(ws["F1"]) # -------------------------- # Obliczenia # -------------------------- # Pobieranie wymiarów [mm] dla wybranego formatu (komórki G1 i G2) ws["G1"] = "=VLOOKUP(F1, $A$2:$C$7, 2, FALSE)" # Szerokość [mm] ws["G2"] = "=VLOOKUP(F1, $A$2:$C$7, 3, FALSE)" # Wysokość [mm] # Obliczanie wymiarów w pikselach (H1 i H2) ws["H1"] = "=(G1/25.4)*F2" # Szerokość [pikseli] ws["H2"] = "=(G2/25.4)*F2" # Wysokość [pikseli] # Obliczenie rozmiaru nieskompresowanego obrazu (24-bit, czyli 3 bajty/piksel) ws["I1"] = "=(H1*H2*3)/(1024^2)" # Rozmiar TIFF (MB) # Przybliżone obliczenia dla innych formatów ws["I2"] = "=I1*0.1" # Rozmiar JPG (MB) – współczynnik ≈ 0,1 ws["I3"] = "=I1*0.08" # Rozmiar JPG2000 (MB) – współczynnik ≈ 0,08 ws["I4"] = "=I1*0.07" # Rozmiar JPG XL (MB) – współczynnik ≈ 0,07 # -------------------------- # Etykiety wyników # -------------------------- ws["E4"] = "Szerokość [mm] z wybranego formatu:" ws["E5"] = "Wysokość [mm] z wybranego formatu:" ws["F4"] = "=VLOOKUP(F1, $A$2:$C$7, 2, FALSE)" ws["F5"] = "=VLOOKUP(F1, $A$2:$C$7, 3, FALSE)" ws["E7"] = "Szerokość [pikseli]:" ws["F7"] = "=(F4/25.4)*F2" ws["E8"] = "Wysokość [pikseli]:" ws["F8"] = "=(F5/25.4)*F2" ws["E10"] = "Rozmiar TIFF (MB):" ws["F10"] = "=(F7*F8*3)/(1024^2)" ws["E11"] = "Rozmiar JPG (MB):" ws["F11"] = "=F10*0.1" ws["E12"] = "Rozmiar JPG2000 (MB):" ws["F12"] = "=F10*0.08" ws["E13"] = "Rozmiar JPG XL (MB):" ws["F13"] = "=F10*0.07" # Zapisz skoroszyt do pliku wb.save("kalkulator_skanowania.xlsx") print("Plik 'kalkulator_skanowania.xlsx' został wygenerowany.")


W Notatniku, aby zapisać plik jako .py, wybierz Plik → Zapisz jako…, a następnie:

  • W polu Nazwa pliku wpisz generuj_kalkulator.py
  • W polu Zapisz jako typ wybierz Wszystkie pliki
  • Zapisz plik w katalogu, np. C:\Users\PC\Downloads\calc

Krok 3. Uruchomienie skryptu

Krok po kroku:

  1. Otwórz terminal (cmd lub PowerShell):
    Na Windowsie możesz nacisnąć Windows + R, wpisać cmd i kliknąć Enter.

  2. Przejdź do katalogu ze skryptem:
    Wpisz w terminalu:

    bash
    cd C:\Users\PC\Downloads\calc

    i naciśnij Enter.

  3. Uruchom skrypt:
    W terminalu wpisz:

    nginx
    python generuj_kalkulator.py

    i naciśnij Enter.
    Po chwili powinieneś zobaczyć komunikat:

    nginx
    Plik 'kalkulator_skanowania.xlsx' został wygenerowany.

Krok 4. Sprawdzenie wyniku

  1. Otwórz folder z plikiem:
    Przejdź do katalogu C:\Users\PC\Downloads\calc i znajdź plik kalkulator_skanowania.xlsx.

  2. Uruchom plik w Excelu:
    Otwórz plik w Excelu – zobaczysz tabelę z danymi formatu papieru, pola do wyboru formatu oraz DPI, a także wszystkie obliczenia: wymiary w pikselach oraz szacunkowy rozmiar pliku w różnych formatach (TIFF, JPG, JPG2000, JPG XL).




Dzięki temu kalkulatorowi można szybko obliczyć rozdzielczość skanów oraz oszacować rozmiar pliku, co jest bardzo przydatne przy planowaniu digitalizacji dokumentów. Kalkulator działa więc ChatGPT się sprawdził. Mogę dalej testować proste aplikacje napisane przez AI.











Jak stworzyłem kalkulator skanowania w Excelu – krok po kroku

W ramach testu poprosiłem ChatGPT o3 mini-high o stworzenie kalkulatora  do obliczania rozdzielczości skanów. Prompt był następujący: stwór...