Объединение таблиц из нескольких листов в одну таблицу с помощью OpenpyxlPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Объединение таблиц из нескольких листов в одну таблицу с помощью Openpyxl

Сообщение Anonymous »

Эта функция Python, которая берет лист Excel, объединяет все таблицы и создает «главную таблицу». Почему возникают повторяющиеся строки?

По сути, каждый раз, когда я запускаю этот код, создается таблица. Когда я просматриваю таблицу, каждая строка печатается дважды.

Я нажимаю «Удалить дубликаты» в приложении Excel и всегда получаю сообщение о том, что найдено и удалено 33 повторяющихся значения; Осталось 33 уникальных значения.
Вот моя функция.

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

def create_master_list(excel_file):
print('Creating Master List')
wb = load_workbook(excel_file)
master_ws = wb.create_sheet(title='Master List')

# Initialize a flag to check if headers are added
headers_added = False
headers = []

# Iterate through each sheet in the workbook, skipping the first three tabs
for sheet_name in wb.sheetnames[3:]:
ws = wb[sheet_name]

# Convert the generator to a list
rows = list(ws.iter_rows(values_only=True))

# Skip sheets without tables
if not rows:
continue

# Check if the header has already been added
if not headers_added and rows:
headers = rows[0]  # Assume first row is the header
master_ws.append(headers)
headers_added = True

# Append the rest of the rows, skipping the header
added_rows = set()

for row in rows[1:]:
if row not in added_rows:  # Add only if row hasn't been added
master_ws.append(row)
added_rows.add(tuple(row))  # Convert to tuple to make it hashable

# Define the table range using get_column_letter to convert column indices to letters
last_col = get_column_letter(len(headers))
table_range = f"A1:{last_col}{master_ws.max_row}"

# Create a table
tab = Table(displayName="MasterTable", ref=table_range)

# Add a default style with striped rows
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
showLastColumn=False, showRowStripes=True, showColumnStripes=True)
tab.tableStyleInfo = style

# Add the table to the worksheet
master_ws.add_table(tab)

# Auto-adjust column size
min_column_width = 8  # Define a minimum column width
for column_cells in master_ws.columns:
max_length = max(len(str(cell.value)) if cell.value is not None else 0 for cell in column_cells)
adjusted_width = max((max_length + 2), min_column_width)  # Ensure minimum column width
master_ws.column_dimensions[get_column_letter(column_cells[0].column)].width = adjusted_width

# Ensure left alignment and freeze panes
left_alignment = Alignment(horizontal='left')
for row in master_ws.iter_rows(min_row=1, max_row=master_ws.max_row):
for cell in row:
cell.alignment = left_alignment
master_ws.freeze_panes = 'B2'

# Save the workbook with the new Master List sheet
wb.save(excel_file)
print("Master List Created")
Я пробовал несколько разных вещей, но ничего не помогает.

Подробнее здесь: https://stackoverflow.com/questions/790 ... h-openpyxl
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как получить все данные листов из API листов Google с помощью Apache Camel
    Anonymous » » в форуме JAVA
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Как получить все данные листов из API листов Google с помощью Apache Camel
    Anonymous » » в форуме JAVA
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как получить все данные листов из API листов Google с помощью Apache Camel
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Openpyxl Чтение нескольких листов .xlsx для создания одного
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как ускорить объединение нескольких листов файлов Excel в один файл Excel
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

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