后来发现:其实并不是莫名丢失,而是里面包含excel函数,比如
1 =LEFT("1981-12-03",19)
这样的,所以,把LEFT内部数据用re解析一编再设置到表格里输出就好了。
1LEFT_FORMULA = r"^=LEFT\s*[(]\s*\"(.+)\"\s*,\s*(\d+)\s*[)]$" 2 3def parsingFormulas(wb): 4 sheetnames = wb.sheetnames 5 for sheet_name in sheetnames: 6 sheet = wb[sheet_name] 7 rowc = sheet.max_row 8 colc = sheet.max_column 9 for rowi in range(rowc): 10 for coli in range(colc): # 这里的code是字典的key 11 # val = sheet.cell(row=rowi+1, column=coli+1).value 12 val = sheet.cell(row=rowi+1, column=coli+1).value 13 if type(val)==str and re.match(LEFT_FORMULA, val): 14 vals = re.match(LEFT_FORMULA, val).groups() 15 sheet.cell(row=rowi+1, column=coli+1).value = vals[0][0:int(vals[1])]
