0
点赞
收藏
分享

微信扫一扫

记一次python处理excel问题的经历

言诗把酒 2022-04-15 阅读 90

需求:

因为需要处理一份excel,有样式,手机,身份证显示为科学计数法,400多行,修改身份证单元格数据

遇到的问题:

  1. 用xlwt,但是报
ValueError: column index (256) not an int in range(256)

无法处理255行以上的数据
2. xlrd 的 formatting_info=True 不支持xlsx格式文件,所以无法保留原有样式
3. 身份证的科学计数法不知道怎么转成字符串再拼接别的字符串

解决方式

使用openpyxl

import openpyxl
# 保留原有样式
wb = openpyxl.load_workbook(u'test222.xlsx')
# 获取所有sheet
sheetnames = wb.sheetnames
# 选择目标sheet
sheet = wb[sheetnames[0]]
# 获取最大行数
rownum = sheet.max_row
for i in range(rownum):
    if i <= 4:
        continue
    # 获取单元格数据
    xx = sheet['G'+str(i)].value
    # 这个是因为单元格中有科学计数数据,科学计数类型为float
    if not isinstance(sheet['G'+str(i)].value, str):
        # 将其格式化字符串,因为是身份证所有不需要小数,.0f就是不需要小数
       xx = format(sheet['G'+str(i)].value, '.0f')
    # 字符串拼接
    xx = "'"+xx
    # 修改单元格数据
    sheet['G'+str(i)] = xx
# 另存为新文件
wb.save(u'newtest222.xlsx')
举报

相关推荐

0 条评论