-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexcel.py
60 lines (39 loc) · 1.53 KB
/
excel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import logging
from log import init_logger
import os
from datetime import datetime
from dataclasses import dataclass
import xlsxwriter
log = init_logger(log_level=logging.DEBUG)
format_table_cell = None
format_table_header = None
format_table_date = None
@dataclass
class ExcelTableHeader:
position: int
label: str
width: int
def create_format(workbook):
global format_table_header
format_table_header = workbook.add_format({'bold': True, 'font_size': 13, 'bottom': 1})
global format_table_cell
format_table_cell = workbook.add_format({'font_size': 12})
format_table_cell.set_text_wrap()
format_table_cell.set_align('left')
format_table_cell.set_align('top')
global format_table_date
format_table_date = workbook.add_format({"num_format": "dd.mm.yyyy hh:mm:ss",
"align": "left"})
workbook.set_size(2000, 1500)
def add_table_header(worksheet, header_list, row=0, col=0):
all_header = list(h2.label for h2 in sorted(header_list, key=lambda h: h.position))
worksheet.write_row(row, col, all_header, format_table_header)
for header in header_list:
worksheet.set_column(col + header.position, col + header.position, header.width)
worksheet.freeze_panes(row + 1, col)
def add_worksheet(workbook, worksheet_name, header_list):
worksheet = workbook.add_worksheet(worksheet_name)
add_table_header(worksheet, header_list)
worksheet.autofilter(0, 0, 0, len(header_list) - 1)
worksheet.set_zoom(150)
return worksheet