• 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")
  • 相关阅读:
    k8s 部署springcloud
    Actuator 端点监控
    [转]再识Cortex-M3之堆栈
    ARM中R0-R15寄存器的作用
    Keil中 Program Size: Code RO-data RW-data ZI-data
    【浅说】堆(heap)和栈(stack)区别
    I2C的小结
    一个判断I2C总线通信异常原因的方法
    Linux输入子系统详解
    【转】完整精确导入Kernel与Uboot参与编译了的代码到Source Insight,Understand, SlickEdit
  • 原文地址:https://www.cnblogs.com/andrew3/p/13157053.html
Copyright © 2020-2023  润新知