#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 и итерации по каждой ячейке?