Есть ли способ отличить свернутый столбец в листе Excel через Python?Python

Программы на Python
Ответить
Anonymous
 Есть ли способ отличить свернутый столбец в листе Excel через Python?

Сообщение Anonymous »

Я читаю лист Excel через Python и пытаюсь читать в Python только видимые строки (не скрытые и не свернутые). Я просмотрел документацию OPENPYXL и обнаружил, что у него есть «скрытые» и «свернутые» свойства. Но как только я читаю лист Excel, не всегда «скрытый» или «свернутый» оказывается правдой, когда столбец скрыт. Мой код следующий

Код: Выделить всё

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
В некоторых случаях лист.column_dimensions содержит видимые столбцы, а в других случаях он не содержит столбцов в листе.column_dimensions, даже если они видимы.
Есть ли лучший способ справиться с такими случаями? При необходимости я готов изучить любую другую библиотеку.

Подробнее здесь: https://stackoverflow.com/questions/793 ... via-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»