| | |
| | | |
| | | |
| | | def pick_columns(cell, nrows, ncols, merges=None): |
| | | """æè¡¨å¤´å
³é®åå®ä½åï¼åä¸å段å½ä¸å¤æ¬¡æ¶ï¼åâè¡å·æå°ãå
¶æ¬¡æ¯å½ä¸è¯æçâçé£ä¸ªã |
| | | |
| | | 两级表头ï¼ç»è¡¨å¤´ï¼å¤çï¼è¥æå段çå½ä¸è½å¨**è·¨å¤åçåå¹¶åå
æ ¼**éï¼è¯´æå®æ¯ç»è¡¨å¤´ï¼ |
| | | ä¸è½ç´æ¥å½æè¯¥å段çåï¼æ¤æ¶å¨æ¬åå¹¶åºå
æé¤âå
¶å®åæ®µæ´æ·±çå表头âæå çåï¼ |
| | | è¥åªå©å¯ä¸ä¸åï¼å该åå°±æ¯æ¬å段çåã |
| | | ä¾ï¼éå·ãä¼ä¸ææ¥æ±æ»ãR5 ç»è¡¨å¤´ãèªå¹´åç´¯è®¡å®ææèµï¼ä¸å
ï¼ãåå¹¶ I:J:Kï¼ |
| | | å表头 I=æ¬å¹´è®¡åæèµï¼ä¸å
ï¼ãJ=å计ãK=å
¶ä¸ï¼æ¬æå®ææèµ â |
| | | ãèªå¹´å累计ãåºè½å¨ Jï¼ä¸æèµç³»ç» G å 5507.5 ä¸è´ï¼ï¼è䏿¯ Iï¼8000ï¼é£å
¶å®æ¯æ¬å¹´è®¡åæèµï¼ã |
| | | """ |
| | | hits = F.scan_fields(cell, nrows, ncols) |
| | | best = {} |
| | | for f in FIELDS: |
| | | if f in hits: |
| | | best[f] = sorted(hits[f], key=lambda h: (h[0], len(h[2])))[0] |
| | | cols = {} |
| | | for f, h in best.items(): |
| | | row1, letter, _txt = h |
| | | c0 = F.colindex(letter) |
| | | span = F.merge_span(merges, row1, c0) |
| | | if span and (span[1] - span[0]) > 1: |
| | | taken = set() |
| | | for f2, h2 in best.items(): |
| | | if f2 == f or h2[0] <= row1: |
| | | continue |
| | | c2 = F.colindex(h2[1]) |
| | | if span[0] <= c2 < span[1]: |
| | | taken.add(c2) |
| | | free = [c for c in range(span[0], span[1]) if c not in taken] |
| | | if len(free) == 1: |
| | | cols[f] = free[0] |
| | | continue |
| | | cols[f] = c0 |
| | | return cols, hits |
| | | """æè¡¨å¤´å®ä½åï¼å«ä¸¤çº§è¡¨å¤´æ¶æ§ï¼ââå®ç°è§ æ ¼å¼æ¢æµ.py ç pick_columnsï¼ä¿è¯ä¸¤å¤å£å¾ä¸è´ã""" |
| | | return F.pick_columns(cell, nrows, ncols, merges, fields=FIELDS) |
| | | |
| | | |
| | | def parse_sheet(cell, nrows, ncols, city=None, merges=None): |
| | |
| | | for k in ('èªå¼å§å»ºè®¾ç´¯è®¡', 'èªå¹´å累计', 'æ¬æå®æ')) |
| | | ok = 'â
ä¸è´' if same else 'â ï¸ ä¸ä¸è´' |
| | | ck = {'åç±»': body_key, 'å¸å·': city, 'æä»¶': f, 'å·¥ä½è¡¨': nm, 'ç¶æ': 'OK', |
| | | '项ç®è¡æ°': len(rows), 'å计è¡': '', 'ä¸è´æ§': ok} |
| | | '项ç®è¡æ°': len(rows), 'å计è¡': '', 'ä¸è´æ§': ok, |
| | | 'åä½': ','.join('%s=%s' % (k, v) for k, v in (extra.get('åä½') or {}).items())} |
| | | for k in ('èªå¼å§å»ºè®¾ç´¯è®¡', 'èªå¹´å累计', 'æ¬æå®æ'): |
| | | ck['æ±å_' + k] = sums[k] |
| | | if sub: |
| | |
| | | *(pretty(s[f]) for f in ('æ»æèµ', 'èªå¼å§å»ºè®¾ç´¯è®¡', 'æ¬å¹´è®¡åæèµ', 'èªå¹´å累计', 'æ¬æå®æ')))) |
| | | report.append('') |
| | | |
| | | ck_cols = ['åç±»', 'å¸å·', 'æä»¶', 'å·¥ä½è¡¨', 'ç¶æ', '项ç®è¡æ°', 'ä¸è´æ§', 'å计è¡', |
| | | report.append('## åæºæä»¶è¯å«å°çåä½ï¼**æè¡¨å¤´å
³é®åå®ä½ï¼ä¸æ¯åºå®åå·**ï¼') |
| | | report.append('') |
| | | report.append('| åç±» | æä»¶ | å·¥ä½è¡¨ | 项ç®åç§° | æ»æèµ | èªå¼å§å»ºè®¾ç´¯è®¡ | æ¬å¹´è®¡åæèµ | èªå¹´å累计 | æ¬æå®æ |') |
| | | report.append('| --- | --- | --- | --- | --- | --- | --- | --- | --- |') |
| | | _key5 = ('项ç®åç§°', 'æ»æèµ', 'èªå¼å§å»ºè®¾ç´¯è®¡', 'æ¬å¹´è®¡åæèµ', 'èªå¹´å累计', 'æ¬æå®æ') |
| | | for ck in checks: |
| | | _cm = dict(kv.split('=', 1) for kv in (ck.get('åä½') or '').split(',') if '=' in kv) |
| | | report.append('| %s | %s | %s | %s |' % (ck.get('åç±»', ''), ck.get('æä»¶', '')[:34], ck.get('å·¥ä½è¡¨', '')[:12], |
| | | ' | '.join(_cm.get(k, 'â') for k in _key5))) |
| | | report.append('') |
| | | |
| | | ck_cols = ['åç±»', 'å¸å·', 'æä»¶', 'å·¥ä½è¡¨', 'ç¶æ', '项ç®è¡æ°', 'ä¸è´æ§', 'å计è¡', 'åä½', |
| | | 'æ±å_èªå¼å§å»ºè®¾ç´¯è®¡', 'æ±å_èªå¹´å累计', 'æ±å_æ¬æå®æ', |
| | | 'å计_èªå¼å§å»ºè®¾ç´¯è®¡', 'å计_èªå¹´å累计', 'å计_æ¬æå®æ'] |
| | | p_ck = os.path.join(out, 'è§£ææ ¡éª_%s.tsv' % a.month) |