xls文件的读写操作
1.关于发送学生成绩的课后练习(昨天的课后练习)
import openpyxl
wb = openpyxl.open('D:\QF\daima\第一阶段\代码25\files\python数据分析.xlsx')
stu_sheet = wb['学生信息']
con_sheet = wb['学生联系方式']
stu_info = []
m_r1, m_c1 = stu_sheet.max_row, stu_sheet.max_column
for row in range(2, m_r1+1):
stu = {}
for col in range(1, m_c1+1):
stu[stu_sheet.cell(1, col).value] = stu_sheet.cell(row, col).value
stu_info.append(stu)
contact_info = []
m_r2, m_c2 = con_sheet.max_row, con_sheet.max_column
"""
[
{'email': '726550822@qq.com', 'msg':'李楠同学你好,以下是你本次期末考试各科成绩:\n英语: 78分\n办公软件操作:96分\n....'}
]
"""
all_con = []
for row in range(2, m_r2+1):
con = {}
name = con_sheet.cell(row, 1).value
address = con_sheet.cell(row, 4).value
con['email'] = address
for stu in stu_info:
if stu['姓名'] == name:
con['msg'] = '%s同学你好,以下是你本次期末考试各科成绩:\n%s' % (name, stu)
all_con.append(con)
print(all_con)
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
connect = smtplib.SMTP_SSL('smtp.qq.com', 465)
connect.login('726550822@qq.com', 'ilxqhvczadfwbegc')
for con in all_con:
to_address = con['email']
email = MIMEMultipart()
email['Subject'] = Header('考试成绩', 'utf-8').encode()
email['From'] = 'YuTing <726550822@qq.com>'
email['To'] = to_address
msg = MIMEText(con['msg'], 'plain')
email.attach(msg)
connect.sendmail('726550822@qq.com', to_address, email.as_string())
connect.close()
2.关于xls文件的读操作
import xlrd
import xlwt
wb = xlrd.open_workbook('files/data1.xls')
names = wb.sheet_names()
print(names)
sheet1 = wb.sheet_by_name('students')
print(sheet1)
sheet2 = wb.sheet_by_index(1)
print(sheet2)
print(sheet1.nrows)
print(sheet1.ncols)
result = sheet1.row_values(1)
print(result)
result = sheet1.col_values(3)
print(result)
result = sheet1.col_values(3,start_rowx=1,end_rowx=4)
print(result)
result1 = sheet1.row_values(2,0,3)
print(result1)
result = sheet1.cell_value(0,0)
print(result)
2.1 xls文件的读操作练习
import xlrd
wb = xlrd.open_workbook('files/data1.xls')
names = wb.sheet_names()
print(names)
sheet1 = wb.sheet_by_name('students')
print(sheet1)
sheet2 = wb.sheet_by_index(1)
print(sheet2)
print(sheet1.nrows)
print(sheet1.ncols)
result = sheet1.row_values(1)
print(result)
result = sheet1.col_values(3)
print(result)
result = sheet1.col_values(3, 1)
print(result)
result = sheet1.row_values(2, 0, 3)
print(result)
result = sheet1.cell_value(0, 0)
print(result)
3.关于xls文件的写操作
import xlwt
wb = xlwt.Workbook()
stu_sheet = wb.add_sheet('students')
stu_sheet.write(0,0,'姓名')
stu_sheet.write(0,1,'性别')
stu_sheet.write(0,2,'年龄')
wb.save('files/data2.xls')
3.1 xls文件写操作的练习
1.暴力拆解法
data = [
['小明', '男', 20.0, 99.0],
['张三', '男', 25.0, 87.0],
['小花', '女', 22.0, 95.0],
['老王', '男', 30.0, 77.0]
]
import xlwt
wb = xlwt.Workbook()
stu_sheet = wb.add_sheet('学生信息')
stu_sheet.write(0,0,'name')
stu_sheet.write(0,1,'gender')
stu_sheet.write(0,2,'age')
stu_sheet.write(0,3,'score')
stu_sheet.write(1,0,'小明')
stu_sheet.write(1,1,'男')
stu_sheet.write(1,2,'20.0')
stu_sheet.write(1,3,'99.0')
stu_sheet.write(2,0,'张三')
stu_sheet.write(2,1,'男')
stu_sheet.write(2,2,'25.0')
stu_sheet.write(2,3,'87.0')
stu_sheet.write(3,0,'小花')
stu_sheet.write(3,1,'女')
stu_sheet.write(3,2,'22.0')
stu_sheet.write(3,3,'95.0')
stu_sheet.write(4,0,'老王')
stu_sheet.write(4,1,'男')
stu_sheet.write(4,2,'30.0')
stu_sheet.write(4,3,'77.0')
wb.save('files/datas.xls')
2.使用循环语句(range函数,insert函数)
data = [
['小明', '男', 20.0, 99.0],
['张三', '男', 25.0, 87.0],
['小花', '女', 22.0, 95.0],
['老王', '男', 30.0, 77.0]
]
line1 = ['name','gender','age','score']
data.insert(0,line1)
import xlwt
wb = xlwt.Workbook()
stu_sheet = wb.add_sheet('student')
print(data)
print('-----------分割线-----------------')
for row_x in range(len(data)):
row_data = data[row_x]
for col_x in range(len(row_data)):
stu_sheet.write(row_x,col_x,row_data[col_x])
wb.save('files/data3.xls')
4. xls文件设置单元格样式
import xlwt
print(xlwt.Style.colour_map)
wb = xlwt.Workbook()
sheet = wb.add_sheet('各种样式')
sheet.write(0,0,'草莓')
style1 = xlwt.XFStyle()
font1 = xlwt.Font()
style1.font = font1
font1.name = '黑体'
font1.height = 30*30
font1.colour_index = 28
font1.bold = True
font1.italic = True
sheet.write(1,0,'荔枝',style = style1)
style2 = xlwt.XFStyle()
pattern1 = xlwt.Pattern()
style2.pattern = pattern1
pattern1.pattern = xlwt.Pattern.SOLID_PATTERN
pattern1.pattern_fore_colour = 52
sheet.write(1,1,'猕猴桃',style2)
sheet.col(0).width = 105*15
sheet.row(2).height_mismatch = True
sheet.row(2).height = 40*60
wb.save('files/data6.xls')