0

I try to read the value of the cells D44 to D47. The problem is that each one is merged with its' neighbor cell in column E means D44:E44 for example.

How do I get the value of the merged cells to check if its value is for example "Yes"?

    for datei in dateien:
        # Überprüfen, ob die Datei eine Excel-Datei ist
        if datei.endswith(".xlsx") or datei.endswith(".xls"):
            # Vollständiger Pfad zur Datei
            datei_pfad = os.path.join(ordner_pfad, datei)

            # Excel-Datei öffnen
            workbook = load_workbook(filename=datei_pfad)

            # Tabellenblatt "Declaration" auswählen
            sheet = workbook["Declaration"]           
                     

            for zelle in ["D44", "D45", "D46", "D47"]:
                if sheet[zelle].value == "Yes" or "Unknown":
                    # Ändern des Dateinamens mit dem Zusatz "_ISSUE"
                    neuer_dateiname = datei.replace(".xlsx", "_ISSUE.xlsx")
                    neuer_dateipfad = os.path.join(ordner_pfad, neuer_dateiname)

                    # Datei speichern
                    workbook.save(filename=neuer_dateipfad)

                    # Alte Datei löschen
                    os.remove(datei_pfad)

                    # Schleife abbrechen, da eine "Yes"-Zelle gefunden wurde
                    break

                else:
                    # Ändern des Dateinamens mit dem Zusatz "_OK"
                    neuer_dateiname = datei.replace(".xlsx", "_OK.xlsx")
                    neuer_dateipfad = os.path.join(ordner_pfad, neuer_dateiname)

                    # Datei speichern
                    workbook.save(filename=neuer_dateipfad)

                    # Alte Datei löschen
                    os.remove(datei_pfad)

                    # Schleife abbrechen, da eine "Yes"-Zelle gefunden wurde
                    break


    
ouroboros1
  • 9,113
  • 3
  • 7
  • 26
exec85
  • 447
  • 1
  • 5
  • 21
  • This could help: https://stackoverflow.com/questions/39574991/how-to-detect-merged-cells-in-an-excel-sheet – Swifty Jul 15 '23 at 10:07
  • 1
    Your current `if` statement will always evaluate to `True`. To understand why, see this [SO post](https://stackoverflow.com/q/20002503/18470692). Use `if sheet[zelle].value == "Yes" or sheet[zelle].value == "Unknown"` or easier `if sheet[zelle].value in ["Yes","Unknown"]` – ouroboros1 Jul 15 '23 at 10:11
  • 1
    Thanks @ouroboros1 ... I tried everything and missed the obious mistake. Thanks! – exec85 Jul 15 '23 at 16:39

1 Answers1

1

Just use the worksheet merged cells param.

import openpyxl

wb = openpyxl.load_workbook('merge.xlsx')
ws = wb['Sheet1']

for merged_cells in ws.merged_cells:
    print(f"Merged Cell {merged_cells.coord} value is {merged_cells.start_cell.value}")
moken
  • 3,227
  • 8
  • 13
  • 23