吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2136|回复: 11
收起左侧

[讨论] 是我的写法儿太笨,还是Python的Xlwings不行?

[复制链接]
13832811375 发表于 2020-10-6 11:36
业闲有志,欲学Python。本无所用,忽遇xlwings:
据言极速,乃动心诚。月余有感,遂做“工程”。
代码拙劣,逻辑半通。终于调好,总算运行。
只是太慢,未知所能。六十个表,十几分钟。
如此效率,白废时功。谁有高招,请启愚蒙!
贴上代码,以鉴众生。

[Python] 纯文本查看 复制代码
import xlwings as xw
import pandas as pd
import os;import re
from dateutil import parser
app=xw.App(visible=False,add_book=False)
file_path=r'D:\MyData\MyDesk\Test0930'
file_lists=os.listdir(file_path)
valjts=[];valqbbs=[];jt=[];qbb=[];jtdt=[];qbbdt=[]
for f in file_lists:
    if not (f.endswith('.xls') or f.endswith('.xlsx')):   #   这个是对的!没有最外层“()”不行!!
        continue
    if f.startswith('~$'):
        continue
    wb=app.books.open(file_path+'/'+f)
    ws=wb.sheets[0]
    if ws['a2'].value == '序号':
        jtdt=[''.join(re.findall('(\d*)',f))[4:]]
        valjt0 = ws['a4:m436'].options(pd.DataFrame, index=False, header=1).value
        valjt1 = list(valjt0[valjt0['维护部门'] == '唐山所'].iloc[:, 2])  # 列名有重名所以用iloc
        valjts.append(jtdt+valjt1)                   #   不能用“+”。“+”形成的是一维列表
        jt=ws['b5:b239'].value
    else:
        if ws['r15'].value == None:
            ws['r15'].value='唐山'
        qbbdt=[''.join(re.findall('(\d*)',f))[4:]]
        valqbb0 = ws['a1'].options(pd.DataFrame, index=False, header=1, expand='table').value
        valqbb1 = list(valqbb0[valqbb0['所属管理所'] == '唐山']['运行情况'])
        valqbbs.append(qbbdt+valqbb1)
        qbb=ws['c2:c32'].value
    wb.save()
    wb.close()
valjts.sort(key=lambda x:parser.parse(x[0]))
valqbbs.sort(key=lambda x:parser.parse(x[0]))
nwb=app.books.add()
nws1=nwb.sheets.add('镜头一览表')
nws1['a3'].options(transpose=True).value=jt
nws1['b2'].options(transpose=True).value=valjts
nws2=nwb.sheets.add('情报板一览表')
nws2['a3'].options(transpose=True).value=qbb
nws2['b2'].options(transpose=True).value=valqbbs
for nws in nwb.sheets:
    rngs=nws['a2'].expand()     #   “扩展”时,参考单元格本身可以是空格,但其周围不能有空格,遇空格即停止。
    for rng in rngs:
        if rng.value == '正常':
            rng.color=(37,100,139)
            rng.api.Font.ColorIndex=2   #   1黑,2白,3红,4绿,5蓝,6黄
            rng.api.Font.Bold=True
        for b in range(7,12):   #   用for循环处理这个真是又慢又low——7891011分别代表上下左右等
            rng.api.Borders(b).LineStyle = 1
            rng.api.Borders(b).Weight = 2
nwb.save(r'D:\MyData\MyDesk\Test0930.xlsx')
nwb.close()
app.quit()

免费评分

参与人数 1吾爱币 +1 收起 理由
xouou + 1 老诗机

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

佚名24 发表于 2020-10-6 11:53
好文采666
netspirit 发表于 2020-10-6 11:55
不苦小和尚 发表于 2020-10-6 12:16
打开一次就行了,操作完保存close,不用从新打开
change 发表于 2020-10-6 12:46
诗兄,好文采
xtuuqtbl 发表于 2020-10-6 12:56
不会写代码的诗人不是好诗人
rsnodame 发表于 2020-10-6 14:10
楼主是来炫耀诗才的吧
 楼主| 13832811375 发表于 2020-10-6 14:48
rsnodame 发表于 2020-10-6 14:10
楼主是来炫耀诗才的吧

【五绝(仄韵)】戏说美国大选
    当代/不了生
美国多假面,民主占一半。
花式造金钱,还装还操蛋。

〖《中华新韵》八寒〗
——————
〖注〗①造,此处是“任意毁坏,不珍惜,不补救”意。造字正规解释无此意,但在东北一带的方言里有,如“可劲造”。

2020年09月14日

【五绝(仄韵)】题图(雅里俗之三)
    当代/不了生
天蓝云雾淡,林黛崖石断。
虽好却输秋,叶花红麓半。

〖《中华新韵》八寒〗

2020年09月14日

【七律(新韵)】路见
当代/不了生
雨后澄空一洗蓝, 流霞分外作娇颜.
清风浩荡深林黛, 烈日骄矜媚榭嫣.
自有童怀惊宇澈, 唯欣老骨爱天然.
且惜心动勤诗酒, 云碎云长万里绵.
《中华新韵》八寒
七律(新韵),仄起首句入韵
 楼主| 13832811375 发表于 2020-10-6 14:49
rsnodame 发表于 2020-10-6 14:10
楼主是来炫耀诗才的吧

写诗还可以炫耀吗?

【五绝(仄韵)】题图(雅里俗之三)
    当代/不了生
天蓝云雾淡,林黛崖石断。
虽好却输秋,叶花红麓半。

〖《中华新韵》八寒〗

2020年09月14日
rsnodame 发表于 2020-10-6 17:56
13832811375 发表于 2020-10-6 14:49
写诗还可以炫耀吗?

【五绝(仄韵)】题图(雅里俗之三)

不愧大湿
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表