Как автоматически развернуть Excel-книгу, содержащую несколько листов, используя Python - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь автоматически развернуть файл Excel, используя скрипт python, но он выдает ошибку. Запрос вашей помощи здесь.

Я пробовал с кодом ниже.

            import openpyxl
            from string import ascii_uppercase

            newFile = "C:\\Users\\subhendu.a.panda\\Documents\\Details.xlsx"

            wb = openpyxl.load_workbook(filename = newFile)
            worksheet = wb.active

            for col in worksheet.columns:
                max_length = 0
                column = col[0].column # Get the column name
                for cell in col:
                    if cell.coordinate in worksheet.merged_cells: # not check merge_cells
                        continue
                    try: # Necessary to avoid error on empty cells
                        if len(str(cell.value)) > max_length:
                            max_length = len(cell.value)
                    except:
                        pass
                adjusted_width = (max_length + 2) * 1.2
                worksheet.column_dimensions[column].width = adjusted_width
                wb.save(newFile)

Выдает ошибку ниже:

Traceback (последний вызов был последним): Файл "C: /Users/subhendu.a.panda/Desktop/myvenv/myV/expandExcel.py", строка 21, в worksheet.column_dimensions [column] .width = Adjust_width Файл "C: \ Users \ subhendu.a.panda \ Desktop \ myvenv \ myV \ lib \ site-packages \ openpyxl \ utils \ bound_dictionary.py", строка 26, в getitem setattr (значение, self.reference, ключ) Файл "C: \ Users \ subhendu.a.panda \ Desktop \ myvenv \ myV \ lib \ site-packages \ openpyxl \ descriptors \ base.py", строка 44, в set поднять TypeError («ожидается» + str (self.expected_type)) Ошибка типа: ожидается

1 Ответ

0 голосов
/ 25 июня 2019

Это решено.Спасибо, ребята, за вашу поддержку.

ошибка выглядела так, как будто она получала номер столбца, а не имя столбца ранее, что приводит к ошибке типа.Я использовал col.column_letter с col.column, как показано ниже, и получил ожидаемое значение o / p.

for col in worksheet.columns:
    max_length = 0
    column = col[0].column_letter # Get the column name
    for cell in col:
        if cell.coordinate in worksheet.merged_cells: # not check merge_cells
            continue
        try: # Necessary to avoid error on empty cells
            if len(str(cell.value)) > max_length:
                max_length = len(cell.value)
        except:
            pass
    adjusted_width = (max_length + 2) * 1.2
    worksheet.column_dimensions[column].width = adjusted_width
    wb.save(newFile)
...