Python操作Excel表格

为什么要有这篇博文呢,因为,去年的9月份开学初迷迷糊糊就当了班长。后来,要评奖评优,统计班级里每个同学的绩点什么的,由于我的excel实在是不熟练,当时就写了个程序,只要输入相应的分数就自动转换得到绩点,记录一下,以后要操作excel可能还有用呢。

import openpyxl  #可进行读写和修改excel文件

#利用openpyxl读excel文件
#获取工作簿对象
workbook=openpyxl.load_workbook(r"C:UsersxiaobaoDesktop17计应2班名单.xlsx")  #python原始字符串
#获取所有工作表名,返回一个列表
shenames=workbook.sheetnames
#print(shenames)
#获取工作表对象
worksheet=workbook.worksheets[0]
#获取工作表属性
name=worksheet.title
#print(name)
#获取该表的行数和列数
rows=worksheet.max_row
columns=worksheet.max_column
#print(rows,columns)
#获取单元格数据
#以行或列获取整个工作表数据
'''
for row in worksheet.rows:
    for cell in row:
        print(cell.value,end=" ")
    print()
for col in worksheet.columns:
    for cell in col:
        print(cell.value,end=" ")
    print()
'''
#获取特定行或特定列数据
'''
for cell in list(worksheet.rows)[2]:  #获取第三行的数据
    print(cell.value,end=" ")
print()
'''
sid=[]  #保存学号,后面用于写入数据
for cell in list(worksheet.columns)[0]:  #获取第一列的数据
    sid.append(cell.value)
    #print(cell.value,end=" ")
print()
print(sid)
sname=[]  #保存姓名
for cell in list(worksheet.columns)[1]:
    sname.append(cell.value)
    #print(cell.value,end=" ")
print()
print(sname)
deyufen=[]  #保存德育分数
for cell in list(worksheet.columns)[2]:
    deyufen.append(cell.value)
    #print(cell.value,end=" ")
print()
print(deyufen)
deyujd=[]  #保存德育绩点
for score in  range(1,len(deyufen)):
    if  deyufen[score] < 60:
        jd=0
        jd=round(jd,3)  #将结果保留三位小数
        deyujd.append(jd)
    else:
        jd=1.00+(deyufen[score]-60)*0.10
        jd=round(jd,3)
        deyujd.append(jd)
print()
print(deyujd)
zhiyufen=[]  #保存智育分数
for cell in list(worksheet.columns)[3]:
    zhiyufen.append(cell.value)
    #print(cell.value,end=" ")
print()
print(zhiyufen)
tiyufen=[]  #保存体育分数
for cell in list(worksheet.columns)[4]:
    tiyufen.append(cell.value)
    #print(cell.value,end=" ")
print()
print(tiyufen)
'''
tiyujd=[]  #保存体育绩点
for score in range(1,len(tiyufen)):
    if tiyufen[score] < 60:
        jd=0
        jd=round(jd,3)
        tiyujd.append(jd)
    else:
        jd=1.00+(tiyufen[score]-60)*0.1
        jd=round(jd,3)
        tiyujd.append(jd)
print()
print(tiyujd)
'''
nenglifen=[]  #保存能力分数
for cell in list(worksheet.columns)[5]:
    nenglifen.append(cell.value)
    #print(cell.value,end=" ")
print()
print(nenglifen)
nenglijd=[]  #保存能力绩点
for score in range(1,len(nenglifen)):
    if nenglifen[score] < 60:
        jd=0
        jd=round(jd,3)
        nenglijd.append(jd)
    else:
        jd=1.00+(nenglifen[score]-60)*0.10
        jd=round(jd,3)
        nenglijd.append(jd)
print()
print(nenglijd)
print()
zonghefen=[]
for row in list(worksheet.rows)[1:54]:
    for cell in row[2:6]:
        zonghefen.append(cell.value)
        #print(cell.value,end=" ")
print(zonghefen)
print()
linshilist=[]  #临时列表
zonghejd=[]  #保存综合绩点
for i in range(len(zonghefen)):
    if i % 4 < 3:
        linshilist.append(zonghefen[i])
    else:
        linshilist.append(zonghefen[i])
        s=linshilist[0]*0.20+linshilist[1]*0.55+linshilist[2]*0.05+linshilist[3]*0.20  #综合绩点计算公式
        s=round(s,3)
        zonghejd.append(s)
        linshilist=[]
print()
print(zonghejd)
print()
#获取某一块数据,利用列表切片完成,获取第一行至第十五行的第一列至第二列数据
'''
for row in list(worksheet.rows)[0:16]:
    for cell in row[0:2]:
        print(cell.value,end=" ")
    print()
'''
#获取某个单元格数据
content_B16=worksheet['B16'].value
#print(content_B16)

#写excel表
#创建一个workbook对象,相当于创建excel表
workbook1=openpyxl.Workbook()
#获取工作表
worksheet1=workbook1.active
#worksheet1.title="Mysheet"
#创建新的工作表
worksheet2=workbook1.create_sheet() #默认插在工作簿末尾
#worksheet2=workbook1.create_sheet(0) #插入在工作簿的第一个位置
worksheet2.title="Newsheet"
#写入数据到工作表
for i in range(len(sid)):
    worksheet1.cell(i+1,1,sid[i])  #写第一列数据学号
for i in range(len(sname)):
    worksheet1.cell(i+1,2,sname[i])  #写第二列数据姓名
project=['德育绩点','智育绩点','体育绩点','能力绩点','综合绩点']
for i in range(len(project)):
    worksheet1.cell(1,i+3,project[i])
for i in range(len(deyujd)):
    worksheet1.cell(i+2,3,deyujd[i])
for i in range(1,len(zhiyufen)):
    worksheet1.cell(i+1,4,zhiyufen[i])
for i in range(1,len(tiyufen)):
    worksheet1.cell(i+1,5,tiyufen[i])
for i in range(len(nenglijd)):
    worksheet1.cell(i+2,6,nenglijd[i])
#保存excel文件
workbook1.save(filename=r"C:UsersxiaobaoDesktop17计应2综合考评绩点.xlsx")
原文地址:https://www.cnblogs.com/andrew3/p/13157053.html