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

后来发现:其实并不是莫名丢失,而是里面包含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])]
点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之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

mysql主从检测状态命令

开启:binlog1,另外注意选择行,列,还是混合模式1)salve:mysqldserverid2relaylogindexslaverelaybin.indexrelaylogslaverelaybin//设置哪些数据库和表需要同步,多个库和表多写几次re

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0

R语言的xtabs函数

今天在做一个列联表独立性检验的时候,总是无法处理好要求的数据类型,偶然的机会,看到了xtabs()函数,感觉很适合用来做列联表,适合将一列数据转换成列联表。shifou<c("yes","yes","no","no")xinbie<c("nan","nv","nan","nv")freq<c(34,38,28