Определение, превышает ли содержимое ячейки Excel размер по умолчанию в Python

#python #excel

#python #excel

Вопрос:

У нас есть сценарии, которые будут записывать данные в Excel, а затем автоматически создавать отчет в формате PDF из этого файла Excel. В некоторых случаях из-за длины ячейки ее содержимое будет обрезано, как показано ниже.

введите описание изображения здесь

Я пытаюсь написать некоторый код, который будет регулировать высоту ячейки после того, как все данные будут записаны в Excel, но до создания PDF. У меня есть скрипт на Python, который переносит слова, удваивает высоту и центрирует вертикальное выравнивание при условии, что я указываю номер строки (т.Е. 10 и 11)

 from win32com.client import Dispatch
excel = Dispatch('Excel.Application')

def main():
    CellAdjust()

def CellAdjust():
    affected_rows = [10,11]
    no_of_sheets = excel.Sheets.Count
    for each_sheet in range(no_of_sheets):
        for row in affected_rows:
            excel.Worksheets(each_sheet 1).Rows(row).VerticalAlignment = 2
            excel.Worksheets(each_sheet 1).Rows(row).WrapText = True
            excel.Worksheets(each_sheet 1).Rows(row).RowHeight = 31.5

if __name__ == '__main__':
    main()
 

введите описание изображения здесь

Я не хочу делать это для всех строк, потому что это портит результирующий вид остальных полей. Итак, есть ли способ определить, превышает ли содержимое ячейки ширину по умолчанию, и если да, то применить функцию? Или есть лучший способ автоматизировать это?

Комментарии:

1. Это не идеально, но вы можете вручную найти размер по умолчанию и сравнить с количеством цифр каждого числа.

Ответ №1:

Я бы использовал метод значения вашего объекта cell, чтобы получить значение ячейки, а затем проверить ее ширину. Если оно слишком велико для отображения, вызовите функцию CellAdjust . Вероятно, вам придется немного поиграться с шириной, чтобы найти оптимальное число для использования.

Комментарии:

1. Да, я подумал, что потребуется хотя бы немного догадок вручную .. Есть ли более эффективный способ проверить содержимое всех ячеек в рабочей книге без использования цикла for и итерации по каждой ячейке?