This commit is contained in:
2026-03-12 01:50:57 +05:00
parent ec82b528a3
commit c33befe7c2
12 changed files with 1553 additions and 69 deletions

54
_diag_tmpl.py Normal file
View File

@@ -0,0 +1,54 @@
"""Диагностика шаблона формы."""
import zipfile
from xml.etree import ElementTree as ET
tmpl = "data/Исх.данные/1. 74 34 0400007 ГК вымпел-73/ШАБЛОН.xlsx"
with zipfile.ZipFile(tmpl) as z:
xml = z.read("xl/worksheets/sheet1.xml").decode("utf-8")
ss_xml = z.read("xl/sharedStrings.xml").decode("utf-8") if "xl/sharedStrings.xml" in z.namelist() else "<sst/>"
# Sharedstrings
ss_root = ET.fromstring(ss_xml)
ns0 = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"
strings = []
for si in ss_root:
texts = []
for t in si.iter(f"{{{ns0}}}t"):
texts.append(t.text or "")
strings.append("".join(texts))
# Merged cells
root = ET.fromstring(xml)
ns = {"s": ns0}
mc = root.find(".//s:mergeCells", ns)
if mc is not None:
print("=== MERGED CELLS ===")
for m in mc:
print(" ", m.get("ref"))
print()
# Row heights
print("=== ROW HEIGHTS ===")
for rd in root.findall(".//s:row", ns):
r = rd.get("r")
ht = rd.get("ht")
if ht and float(ht) > 15:
print(f" Row {r}: height={ht}")
print()
print("=== ALL NON-EMPTY CELLS ===")
for row_el in root.findall(".//s:row", ns):
for c in row_el.findall("s:c", ns):
ref = c.get("r", "")
t = c.get("t", "")
v = c.find("s:v", ns)
if v is None:
continue
val = v.text or ""
if t == "s":
try:
val = strings[int(val)]
except Exception:
pass
if val.strip():
print(f" {ref}: {repr(val[:80])}")