openpyxl

  • 首先确保你已经导入openpyxl包,使用安装包import openpyxl;如若没有,去cmd窗口pip install openpyxl;若在.pip install openpyxl出现问题:Command “python setup.py egg_info” failed with error code 1,可以参考 使用:
    python -m pip install --upgrade --force pip pip install setuptools==33.1.1

相关注意事项:

  • excel表的文字编码如果是“gb2312” 读取后就会显示乱码,需要转成Unicode
  • workbook:工作簿,一个Excel文件,可以包含多个工作表
  • sheet:工作表,默认表明为sheet1,sheet2…
  • cell:单元格,存储数据对象(这个需要主意)
  • 新建Excel文件
wb = openpyxl.Workbook() # 同时默认创建一个sheet
wb.save("501.xlsx"#激活新建的文件501.xlsx
  • 新建数据表
# 新建sheet表
wb.create_sheet(index=2, title="sheet2") # 可通过index控制创建的表的位置
  • 打开已有的excel
wb = openpyxl.load_workbook("501.xlsx")
  • 根据表名打开sheet表
sheet1 = wb[sheet_names[0]] # 打开第一个 sheet 工作表
  • 获取所有表名
sheet_names = wb.sheetnames
  • 根据表名删除sheet表
wb.remove(wb[sheet_names[2]])
#下表从零开始,此时删除的是第三张表
  • 获取最大列数
sheet1_max_colum = sheet1.max_column
  • 获取最大行数
sheet1_max_row = sheet1.max_row
  • 获取单元格A1值
A1_value = sheet1['A1'].value 
#不区分大小写
  • 获取单元格A1列值
A1_column = sheet1['A1'].column
  • 获取单元格A1行号
A1_row = sheet1['A1'].row
  • 获取第x行第y列的单元格值
A1 = sheet1.cell(row=x, column=y).value # 获取第一行第一列的单元格值
  • 修改第x行第y列的单元格的值
sheet1.cell(row=x, column=y, value="12") # 修改第一行第二列的单元格的值为B1
sheet1["A1"] = "12"#修改A1单元格值为12
sheet1["B11"] = "11" # 新增B11单元格的值为B11
  • 修改数据表名称
sheet1.title = "sheet_501" 
  • 保存文件
#注意不保存文件,文件打开时文件保存会出错
#一定要牢记这一点,就这一点卡了我一个多小时
wb.save("test.xlsx")
#另附上读取指纹考勤表的脚本
#from openpyxl import load_workbook
import openpyxl

def get_sheet():
    wb = openpyxl.load_workbook('501.xlsx')
    # 打开已有文件
    print( "已新建表单" )
    # 新建表单,储存最终信息
    sheet_names = wb.sheetnames
    # 列表,获得所有表单名
    sheet = wb[sheet_names[0]]
    # 打开sheet表
    sheet2 = wb[sheet_names[1]]
    sheet2.cell( row=1, column=3 ).value
    name = sheet['c1'].value
    old = sheet['d1'].value[7:9]
    row1,column1,all = 1,1,0
    sheet2.cell(row=1,column=1,value=name)
    # 写入第一个人的姓名
    result = 0
    row1 = row1 + 1
    # 获取c列所有数据
    for i in range(sheet.max_row):
        day = sheet.cell(row=i+1, column=4).value[7:9]
        if old == day and name == sheet.cell(row=i+1, column=3).value:
            result = result + 1
            if result > 6:
                result = 6
        elif old != day and name == sheet.cell(row=i+1, column=3).value:
            all = all + result
            old = sheet.cell(row=i+1, column=4).value[7:9]
            result = 1
        else:
            name = sheet.cell(row=i+1, column=3).value
            sheet2.cell(row=row1-1, column=2).value = all + result
            sheet2.cell(row=row1, column=1).value = name
            #print(all+result,name)
            all,result = 0,1
            row1 += 1
    sheet2.cell( row=row1 - 1, column=2 ).value = all + result
    wb.save( '501.xlsx' )
    return sheet2
    # 获取c列所有数据

def main():
    sheet2 = get_sheet()
    for i in range(sheet2.max_row ):
        all = sheet2.cell( row=i+1, column=2 ).value
        name = sheet2.cell( row=i+1, column=1 ).value
        print(name,all)
    print("共计 %d 人" % sheet2.max_row)

main()
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值