openpyxl写出xlsx时莫名丢失掉多列数据(变为nan)

乌秃头
• 阅读 385

后来发现:其实并不是莫名丢失,而是里面包含excel函数,比如

  =LEFT("1981-12-03",19)

这样的,所以,把LEFT内部数据用re解析一编再设置到表格里输出就好了。

LEFT_FORMULA = r"^=LEFT\s*[(]\s*\"(.+)\"\s*,\s*(\d+)\s*[)]$"

def parsingFormulas(wb):
    sheetnames = wb.sheetnames
    for sheet_name in sheetnames:
        sheet = wb[sheet_name]
        rowc = sheet.max_row
        colc = sheet.max_column
        for rowi in range(rowc):
            for coli in range(colc):  # 这里的code是字典的key
                # val = sheet.cell(row=rowi+1, column=coli+1).value
                val = sheet.cell(row=rowi+1, column=coli+1).value
                if type(val)==str and re.match(LEFT_FORMULA, val):
                    vals = re.match(LEFT_FORMULA, val).groups()
                    sheet.cell(row=rowi+1, column=coli+1).value = vals[0][0:int(vals[1])]
点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Wesley13 Wesley13
3年前
mysql主从检测状态命令
开启:binlog1,另外注意选择行,列,还是混合模式1)salve:mysqldserverid2relaylogindexslaverelaybin.indexrelaylogslaverelaybin//设置哪些数据库和表需要同步,多个库和表多写几次re
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
R语言的xtabs函数
今天在做一个列联表独立性检验的时候,总是无法处理好要求的数据类型,偶然的机会,看到了xtabs()函数,感觉很适合用来做列联表,适合将一列数据转换成列联表。shifou<c("yes","yes","no","no")xinbie<c("nan","nv","nan","nv")freq<c(34,38,28
Wesley13 Wesley13
3年前
oracle查询表数据并重新插入到本表
oracle查询表数据并重新插入到本表CreateTime2018年5月17日10:30:10Author:Marydon1.情景描述查询表中数据SELECTFROMat_aut
Wesley13 Wesley13
3年前
MySQL清空表漏洞!
MySQL有一个特点,当某个字段是字符串时,如果你的sql传数字它会尝试把这一列所有值转换成数字进行匹配,如果不是数字则会转换为0.创建表test,并插入测试数据CREATETABLEtest(idvarchar(10)NOTNULL,PRIMARYKEY(id));
Stella981 Stella981
3年前
Python的面试题
(1)怎么把一个字符串转换成整型?   可以使用int函数 如int('3')  结果由字符串'3'变为整型3(2)python内建数据类型有哪些?   int、bool、str、list、ruple、dict(3)怎么把一个数字格式化输出为10位宽度,不足前面补零?   可以用'%0
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
美凌格栋栋酱 美凌格栋栋酱
1个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
乌秃头
乌秃头
Lv1
乌秃头,把恰峠。
文章
3
粉丝
0
获赞
0