Klikací hyperlinky na soubory v ED_PODANI_DATA bez modrého podtržení

- Při generování reportu se vytvoří složka SOUBORY_PRO_FAKTURY_REPORT
- KDAVKA → .txt, REQUEST → .xml, SERVERRESPONSE → .xml, PROTOCOL → .html
- Buňky s obsahem jsou klikací (otevřou soubor v Notepadu/prohlížeči)
- Font normální (černý, bez podtržení) – hyperlink funguje bez vizuální změny
- Při každém spuštění se složka smaže a vygeneruje znovu čerstvá

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-30 20:12:15 +02:00
parent 4f586f4b57
commit 8f61cf04da
@@ -19,6 +19,13 @@ now = datetime.now()
filename = now.strftime('%Y-%m-%d_%H-%M-%S') + '_faktury.xlsx'
output_path = os.path.join(output_dir, filename)
# --- Složka pro soubory (KDAVKA, REQUEST atd.) ---
files_dir = os.path.join(output_dir, 'SOUBORY_PRO_FAKTURY_REPORT')
import shutil
if os.path.exists(files_dir):
shutil.rmtree(files_dir)
os.makedirs(files_dir)
# --- Smazání předchozích verzí ---
for f in os.listdir(output_dir):
if f.endswith('_faktury.xlsx'):
@@ -33,6 +40,7 @@ wb = openpyxl.Workbook()
HEADER_FILL = PatternFill('solid', fgColor='2F5496')
HEADER_FONT = Font(bold=True, color='FFFFFF')
LINK_FONT = Font(color='0563C1', underline='single')
PLAIN_FONT = Font(color='000000') # normální font bez modrého podtržení
ZEBRA_FILL = PatternFill('solid', fgColor='DCE6F1')
def style_header(ws):
@@ -432,6 +440,37 @@ for i, row in enumerate(ed_data_rows, start=2):
serverresp_txt = decode_latin_blob(serverresp, 'iso-8859-2')
protocol_txt = decode_latin_blob(protocol, 'iso-8859-2')
# Ulož soubory pro klikací hyperlinky
rel_prefix = 'SOUBORY_PRO_FAKTURY_REPORT'
kdavka_link = ''
request_link = ''
serverresp_link = ''
protocol_link = ''
if kdavka_txt:
fname = f'KDAVKA_{eid}.txt'
with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f:
f.write(kdavka_txt)
kdavka_link = f'{rel_prefix}/{fname}'
if request_txt:
fname = f'REQUEST_{eid}.xml'
with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f:
f.write(request_txt)
request_link = f'{rel_prefix}/{fname}'
if serverresp_txt:
fname = f'SERVERRESPONSE_{eid}.xml'
with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f:
f.write(serverresp_txt)
serverresp_link = f'{rel_prefix}/{fname}'
if protocol_txt:
fname = f'PROTOCOL_{eid}.html'
with open(os.path.join(files_dir, fname), 'w', encoding='utf-8') as f:
f.write(protocol_txt)
protocol_link = f'{rel_prefix}/{fname}'
out = [
eid,
f"{hiccode} {HICCODE_MAP.get(str(hiccode), '')}" if hiccode else '',
@@ -451,6 +490,14 @@ for i, row in enumerate(ed_data_rows, start=2):
cell.alignment = WRAP
ws6.row_dimensions[i].height = 80
# Hyperlinky na soubory F=KDAVKA, G=REQUEST, H=SERVERRESPONSE, I=PROTOCOL
for col_idx, link in [(6, kdavka_link), (7, request_link),
(8, serverresp_link), (9, protocol_link)]:
if link:
cell = ws6.cell(row=i, column=col_idx)
cell.hyperlink = link
cell.font = PLAIN_FONT # bez modrého podtržení
style_header(ws6)
ws6.freeze_panes = 'A2'