Python学习笔记(21)Excel操作相关模块(xlwt/xlrd/xlutils)

时间:2020-05-25
本文章向大家介绍Python学习笔记(21)Excel操作相关模块(xlwt/xlrd/xlutils),主要包括Python学习笔记(21)Excel操作相关模块(xlwt/xlrd/xlutils)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、写Excel

  

import xlwt

book = xlwt.Workbook()#建立工作簿
sheet = book.add_sheet('sheet1')#添加sheet
sheet.write(0,0,"学生姓名")#行,列,内容
sheet.write(1,0,"蔡明超")
sheet.write(2,0,"吴亦凡")
sheet.write(3,0,"汪峰")
book.save("明星.xls")#如果是wps的话,可以使用xlsx

  写表结果:

  写表练习:

  1、将学生成绩信息,使用如图格式写入一个表格中

  {
"1":["小花",99,100,98.5],
"2":["小王",90,30.5,95],
"3":["小明",67.5,49.6,88]          
}

import xlwt
book = xlwt.Workbook()
sheet = book.add_sheet("学生成绩")
title = ['学号','姓名','语文成绩','数学成绩','英语成绩','总分','平均分']

#优化前:
# data = {
# 	"1":["小花",99,100,98.5],
# 	"2":["小王",90,30.5,95],
# 	"3":["小明",67.5,49.6,88]
# }
# #处理表头
# for col,t in enumerate(title):
#     sheet.write(0,col,t)
# row = 1
# for k,v in data.items():
#     v.insert(0,k)#插入编号,将字典类型转换为list
#     sum_score = sum(v[2:])#计算总分
#     avg = round(sum_score/3,2)#计算平均分,并保留两位小数
#     v.append(sum_score)
#     v.append(avg)
#     col = 0
#     for value in v:
#         sheet.write(row,col,value)
#         col+=1
#     row +=1
# book.save('学生成绩表.xls')

#优化后:
row = 0
for t in title:
    sheet.write(0,row,t)
    row+=1

data = [
	["1","小花",99,100,98.5],#1
	["2","小王",90,30.5,95],#
	["3","小明",67.5,49.6,88]#
]

for row,v in enumerate(data,1): #行,row为从1开始的索引,默认枚举型从0开始
    sum_score = sum(v[2:])#算总分
    avg_score = round(sum_score / 3,2) #算平均分,round取两位小数
    v.append(sum_score)
    v.append(avg_score)
    for col,value in enumerate(v):
        sheet.write(row,col,value)

book.save("students.xls")  #如果你用的是wps的话,可使用xlsx

  

二、读Excel

  将student.xls表格中的数据读出来

  

import xlrd
book = xlrd.open_workbook('students.xls')#打开表格
sheet = book.sheet_by_index(0)#打开sheet
# sheet = book.sheet_by_name("学生成绩")
print(sheet.cell(0,0).value)#指定单元格内容
print(sheet.row_values(1))#取索引值为1的整行数据
print(sheet.col_values(1))#取索引值为1的整列数据
print(sheet.nrows)#总行数
print(sheet.ncols)#总列数

 返回结果:

id
['1', '小花', 99.0, 100.0, 98.5, 297.5, 99.17]
['name', '小花', '小王', '小明']
4
7

  

三、修改Excel

from xlutils import copy
import xlrd
import os

book = xlrd.open_workbook('students.xls')#打开表格
new_book = copy.copy(book)#拷贝表格
sheet = new_book.get_sheet(0)
sheet.write(0,0,"id")#将0行0列单元格修改为id
sheet.write(0,1,"name")
os.rename('students.xls','students_bak.xls')#为防止表格被覆盖无法复原,先备份表格
new_book.save('students.xls')

  

原文地址:https://www.cnblogs.com/bugoobird/p/12958103.html