Gibt es eine Möglichkeit, reduzierte Spalten in einer Excel-Tabelle über Python zu unterscheiden?Python

Python-Programme
Guest
 Gibt es eine Möglichkeit, reduzierte Spalten in einer Excel-Tabelle über Python zu unterscheiden?

Post by Guest »

Ich lese Excel-Tabellen über Python und versuche, nur sichtbare Zeilen in Python zu lesen (nicht ausgeblendet oder reduziert). Ich habe die Dokumentation von OPENPYXL durchgesehen und festgestellt, dass die Eigenschaft „versteckt“ und „kollabiert“ ist. Aber sobald ich die Excel-Tabelle gelesen habe, ist nicht immer „versteckt“ oder „reduziert“ wahr, wenn die Spalte ausgeblendet ist. Mein Code folgt

Code: Select all

def read_visible_data_from_sheet(sheet):
data = []
# Iterate through rows
for row in sheet.iter_rows():
row_num = row[0].row
# Check if the row is hidden or has height set to 0
row_hidden = sheet.row_dimensions[row_num].hidden
row_height = sheet.row_dimensions[row_num].height
row_level = sheet.row_dimensions[row_num].outlineLevel

if row_hidden or (row_height is not None and row_height == 0):
continue  # Skip hidden rows

# Check if any parent row is collapsed
is_collapsed = False
for parent_row_num in range(1, row_num):
if sheet.row_dimensions[parent_row_num].outlineLevel < row_level and sheet.row_dimensions[parent_row_num].hidden == True:
is_collapsed = True
break
if is_collapsed:
continue # Skip collapsed rows

visible_row = []
# Iterate through columns in the row
for cell in row:
col_letter = cell.column_letter
col_dim = sheet.column_dimensions.get(col_letter)
if col_dim:
col_hidden = col_dim.hidden
col_width = col_dim.width
else:
continue
# Check if the column is hidden or has width set to 0
if col_hidden or (col_width is not None and col_width == 0):
continue  # Skip hidden columns

visible_row.append(cell.value)
# Append the visible row to the data list
if visible_row:  # Avoid adding empty rows
data.append(visible_row)

# Convert to a DataFrame
df = pd.DataFrame(data)
return df, sheet
In einigen Fällen enthält „sheet.column_dimensions“ Spalten, die sichtbar sind, während es in anderen Fällen keine Spalten in „sheet.column_dimensions“ enthält, selbst wenn es sichtbar ist.
Gibt es einen besseren Weg, mit solchen Fällen umzugehen? Ich bin offen dafür, bei Bedarf auch andere Bibliotheken zu erkunden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post