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
1
2
3
新建数据表
# 新建sheet表
wb.create_sheet(index=2, title="sheet2") # 可通过index控制创建的表的位置
1
2
打开已有的excel
wb = openpyxl.load_workbook("501.xlsx")
1
根据表名打开sheet表
sheet1 = wb[sheet_names[0]] # 打开第一个 sheet 工作表
1
获取所有表名
sheet_names = wb.sheetnames
1
根据表名删除sheet表
wb.remove(wb[sheet_names[2]])
#下表从零开始,此时删除的是第三张表
1
2
获取最大列数
sheet1_max_colum = sheet1.max_column
1
获取最大行数
sheet1_max_row = sheet1.max_row
1
获取单元格A1值
A1_value = sheet1['A1'].value
#不区分大小写
1
2
获取单元格A1列值
A1_column = sheet1['A1'].column
1
获取单元格A1行号
A1_row = sheet1['A1'].row
1
获取第x行第y列的单元格值
A1 = sheet1.cell(row=x, column=y).value # 获取第一行第一列的单元格值
1
修改第x行第y列的单元格的值
sheet1.cell(row=x, column=y, value="12") # 修改第一行第二列的单元格的值为B1
sheet1["A1"] = "12"#修改A1单元格值为12
sheet1["B11"] = "11" # 新增B11单元格的值为B11
1
2
3
修改数据表名称
sheet1.title = "sheet_501"
1
保存文件
#注意不保存文件,文件打开时文件保存会出错
#一定要牢记这一点,就这一点卡了我一个多小时
wb.save("test.xlsx")
1
2
3
#另附上读取指纹考勤表的脚本
#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()
————————————————
版权声明:本文为CSDN博主「秋瑾先生」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dldl1718/article/details/87645480

原文地址:https://www.cnblogs.com/valorchang/p/11585708.html