zoukankan      html  css  js  c++  java
  • Python_Excel文件操作

      1 '''
      2 使用xlrd模块写入Excel文件
      3 '''
      4 import xlrd
      5 book=xlrd.open_workbook(r'/Users/c2apple/Desktop/纪录/测试报告/张涛文件盘/骆洪文模版/彩屏带杨升/ZD-QR-730114 彩屏软件测试报告 00版.xlsx')#打开Excel文件
      6 sheet1=book.sheet_by_name('First')  #打开worksheet
      7 row0=sheet1.row(0)  #获取第0行
      8 print(row0[0])
      9 print(row0[0].value)    #查看单元格中的内容
     10 
     11 #使用扩展库openpyxl读取Excel2007及更高版本的Excel文件
     12 import openpyxl
     13 from openpyxl import Workbook
     14 fn=r'/Users/c2apple/Desktop/test.xlsx'    #文件名
     15 wb=Workbook()   #创建工作簿
     16 ws=wb.create_sheet(title='你好,世界')   #单元格赋值
     17 ws['A1']='这是第一个单元格' #单元格赋值
     18 ws['B1']=3.1415926
     19 wb.save(fn)     #保存Excel文件
     20 wb=openpyxl.load_workbook(fn)   #打开已有的Excel文件
     21 ws=wb.worksheets[1] #打开指定索引的工作表
     22 print(ws['A1'].value)  #读取并输出指定单元格的值
     23 ws.append([1,2,3,4,5])  #添加一行数据
     24 ws.merge_cells('F2:F3') #合并单元格
     25 ws['F2']="=sum(A2:E2)"  #写入公式
     26 for r in range(10,15):
     27     for c in range(3,8):
     28         _=ws.cell(row=r,column=c,value=r*c) #写入单元格数据
     29 wb.save(fn)
     30 
     31 '''
     32     假设某学校所有课程每学期允许多次考试,学生可随时参加考试,系统自动将每次成绩
     33 添加到Excel文件(包含3列,姓名、课程、成绩)中,现期末要求统计所有学生每门课程的最高成绩。
     34 下面代码首先模拟生成随机成绩数据,然后进行统计分析.
     35 '''
     36 import openpyxl
     37 from openpyxl import Workbook
     38 import random
     39 
     40 #随机生成数据
     41 def generatetRandomInformation(filename):
     42     workbook=Workbook()
     43     worksheett=workbook.worksheets[0]
     44     worksheett.append(['姓名','课程','成绩'])
     45     #中文名字中的第一、第二、第三个字
     46     first=tuple('赵钱孙李')
     47     middle=tuple('伟昀琛东')
     48     last=tuple('坤艳志')
     49     #课程名称
     50     subject=('语文','数学','英语')
     51     #随机生成200个数据
     52     for i in range(200):
     53         line=[]
     54         r=random.randint(1,100)
     55         name=random.choice(first)
     56         #按一定概率生成只有两个字的中文名字
     57         if i>50:
     58             name=name+random.choice(middle)
     59         name=name+random.choice(last)
     60         #依次生成姓名、课程名、和成绩
     61         line.append(name)
     62         line.append(random.choice(subject))
     63         line.append(random.randint(0,100))
     64         worksheett.append(line)
     65    #保存数九,生成Excel 2007格式的文件
     66     workbook.save(filename)
     67 
     68 def getResult(oldfile, newfile):
     69     #用于存放结果数据的字典
     70     result = dict()
     71 
     72     #打开原始数据
     73     workbook = openpyxl.load_workbook(oldfile)
     74     worksheet = workbook.worksheets[0]
     75 
     76     #遍历原始数据
     77     for row in worksheet.rows:
     78         if row[0].value == '姓名':
     79             continue
     80         #姓名,课程名称,本次成绩
     81         name, subject, grade = row[0].value, row[1].value, row[2].value
     82 
     83         #获取当前姓名对应的课程名称和成绩信息
     84         #如果result字典中不包含,则返回空字典
     85         t = result.get(name, {})
     86         #获取当前学生当前课程的成绩,若不存在,返回0
     87         f = t.get(subject, 0)
     88         #只保留该学生该课程的最高成绩
     89         if grade > f:
     90             t[subject] = grade
     91             result[name] = t
     92 
     93     workbook1 = Workbook()
     94     worksheet1 = workbook1.worksheets[0]
     95     worksheet1.append(['姓名','课程','成绩'])
     96 
     97     #将result字典中的结果数据写入Excel文件
     98     for name, t in result.items():
     99         print(name,t)
    100         for subject, grade in t.items():
    101             worksheet1.append([name, subject, grade])
    102 
    103     workbook1.save(newfile)
    104 
    105 if __name__=='__main__':
    106     oldfile=r'test1.xlsx'
    107     newfile=r'resultt.xlsx'
    108     generatetRandomInformation(oldfile)
    109     getResult(oldfile,newfile)
  • 相关阅读:
    Omi框架学习之旅
    Omi框架学习之旅
    Omi框架学习之旅
    加密解密
    RSA加密解密
    CMDB后台管理(AutoServer)
    CMDB Autoclient思路分析
    CMDB开发(需求分析)
    Django之model操作(续)
    Django之Model操作
  • 原文地址:https://www.cnblogs.com/cmnz/p/7010800.html
Copyright © 2011-2022 走看看