Guest User

Untitled

a guest
Jun 27th, 2023
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.64 KB | None | 0 0
  1. import os
  2. import openpyxl
  3. from openpyxl.worksheet.table import Table, TableStyleInfo
  4. from openpyxl.styles import Font, Alignment
  5.  
  6. # Получаем путь к директории, где находится файл скрипта
  7. PTH = os.path.abspath(os.path.dirname(__file__))
  8.  
  9. # Создаём список файлов с заменой адреса корневой папки на C:\
  10. def get_files_from_folder(folder_path):
  11.     return [(os.path.join(root, file).replace(folder_path, 'C:'), os.path.splitext(file)[0], os.path.splitext(file)[1].upper(), os.path.getsize(os.path.join(root, file)))
  12.             for root, dirs, files in os.walk(folder_path) for file in files]
  13. files = get_files_from_folder(os.path.join(PTH, "C_"))
  14.  
  15. # Создаём новую книгу Excel и лист в ней
  16. WB = openpyxl.Workbook()
  17. WS = WB.active
  18. WS.title = "Файлы"
  19.  
  20. # Задаём ширину столбцов таблицы
  21. WS.column_dimensions['A'].width = 25
  22. WS.column_dimensions['B'].width = 50
  23. WS.column_dimensions['C'].width = 10
  24. WS.column_dimensions['D'].width = 10
  25. WS.column_dimensions['E'].width = 10
  26.  
  27. # Задаём заголовки таблицы
  28. WS.cell(2, 1, "Путь")
  29. WS.cell(2, 2, "Имя")
  30. WS.cell(2, 3, "Формат")
  31. WS.cell(2, 4, "Байт")
  32. WS.cell(2, 5, "Статус")
  33.  
  34. # Заполняем таблицу данными (это меняет шрифт!)
  35. for row, file_info in enumerate(files, start=3):
  36.     WS.cell(row, 1, file_info[0])
  37.     WS.cell(row, 2, file_info[1])
  38.     WS.cell(row, 3, file_info[2] if file_info[2] != "" else "–")
  39.     WS.cell(row, 4, file_info[3]).number_format = '#,##0'
  40.     WS.cell(row, 5, "OK")
  41.  
  42. # Оформляем таблицу, как смарт-таблицу (это меняет шрифт!)
  43. table = Table(displayName="Список", ref="A2:E"+str(len(files)+2))
  44. style = TableStyleInfo(name="TableStyleMedium12", showRowStripes=0)
  45. table.tableStyleInfo = style
  46. WS.add_table(table)
  47.  
  48. # Задаём шрифт по умолчанию, выравнивание по вертикали по центру
  49. def_font = Font(name="Arial Narrow", size=10)
  50. def_align = Alignment(vertical='center', wrap_text=0)
  51. for row in WS.rows:
  52.     for cell in row:
  53.         cell.font = def_font
  54.         cell.alignment = def_align
  55.  
  56. # Меняем цвет шрифта в столбце 1, закрепляем строку №2, отключаем сетку листа
  57. for row in WS.rows:
  58.     row[0].font = Font(name="Arial Narrow", size=10, color='FF808080')
  59. WS.freeze_panes = 'A3'
  60. WS.sheet_view.showGridLines = 0
  61.  
  62. # Сохраняем книгу Excel
  63. WB.save(os.path.join(PTH, "Files.xlsx"))
Advertisement
Add Comment
Please, Sign In to add comment