NemProgrammering.dk logo

Indsæt og opdater data i Excel-ark med Python

Lær Python programmering » Indsæt og opdater data i Excel-ark med Python # 23
Inkluderet:
Livstidsadgang
27 videolektioner
7 timers undervisning
Stil spørgsmål
Kursusbevis

Information om denne video

Underviser: Simon Rotendahl   Video: 10:21   Lektion nr. 23 af 27

Opdatere timeseddel

Det her er vores anden video i eventyret om Python og Microsoft Excel. Vi er ved at være i slutningen af kurset, så projektet her, inkorporere også mange koncepter fra tidligere, while løkker, betinget udtryk osv. Så det bliver en svær video, men meget lærings-fyldt.

Vi vil her i videoen bruger Python til at opdatere en timeseddel, ved at lægge alle timer, fra dags dato til sidste opdatering, sammen, og skrive det ind i excel arket. Husk at stille spørgsmål, og se de tidligere videoer, hvis det er noget der ikke giver mening.

I næste video afslutter vi Excel.

Spørgsmål og kommentarer

Kun medlemmer med adgang til dette kursus kan stille spørgsmål og kommentere. Bliv medlem her!

  • Jessie W. siger:

    Hej Simon.
    Når jeg forsøger at kører programmet får jeg denne fejl:

    File “.\23 Opdater data i Excel.py”, line 15, in
    while today.date() != dt.datetime.date(sheet.cell(column=1, row=fromDate).value):
    TypeError: descriptor ‘date’ for ‘datetime.datetime’ objects doesn’t apply to a ‘NoneType’ object

    Jeg tænker selv at det har noget med datoerne at gøre, altså at der ikke er nogen datotype for dagen idag, da excel arket kun fortsætter til dato: 31.12.2018.

    Hvad i alverden skal jeg gøre her?

    På forhånd tak.

    Venlig hilsen Jessie Winther Nielsen

    1. Simon R. siger:

      Hej Jessie,
      Det er godt spottet det er nemlig problemet til en hvis grad. Specifikt er problemet at når vi skriver ‘sheet.cell(column=1, row=fromDate).value’ så henter vi den værdi der ligger i cellen, hvis der ikke ligger noget i cellen (som når datoen i dag, er senere end datoen i arket) så er sheet.cell(column=1, row=fromDate).value = None, altså vi får en værdi som har typen None tilbage og ikke et datetime.datetime object.

      For at fikse det er der en nem måde, vi ændre linjen til
      while (dt.datetime.date(sheet.cell(column=1, row=fromDate).value) is not None) and (today.date() != dt.datetime.date(sheet.cell(column=1, row=fromDate).value)):

      Så nu har vores while løkke to betingelser
      1. At cellen ikke må være tom, altså at, hvilket er den første del i den nye linje (før and), for når vi skriver “etEllerAndet is not None” så giver det True hvis etEllerAndet ikke er None, og det giver False hvis det er None
      2. Betingelsen fra før med at i dag ikke er den dato vi er nået til

      and siger så at både betingelse 1 og betingelse 2 skal være sand for at vi fortsætter i løkken, så nu vil lykken stoppe hvis den enten møder en dato som er samme dato som i dag, eller hvis den møder en tom celle.

      Jeg håber det hjalp ellers må du sige til :)