day 20-excel写操作和时间操作
1. excel文件写操作
新建excel文件、新建表、删除表、给表重命名、修改单元格内容
注意:excel文件的写操作必须保存后才有效
1.新建excel文件
1.新建excel文件(工作簿)
openpyxl.Workbook()
workbook = openpyxl.Workbook()
2.保存excel文件
workbook.save(‘files/student.xlsx’)
2.新建表
1.获取工作簿
1)新建excel文件获取工作簿
orkbook = openpyxl.Workbook()
2)打开已经存在的excel文件获取工作簿
workbook = openpyxl.open('files/student.xlsx')
2.新建表
工作簿对象.create_sheet(表名, 表的下标)
sheet1 = workbook.create_sheet()
sheet2 = workbook.create_sheet('教师表')
sheet3 = workbook.create_sheet('课程表', 0)
如果表存在就不新建,表不存在才新建表
if '图书表' not in workbook.sheetnames:
workbook.create_sheet('图书表')
3.删除表
工作簿对象.remove(表对象)
sheet = workbook['Sheet']
workbook.remove(sheet)
4.修改单元格内容
单元格对象.value = 数据
course_sheet = workbook['课程表']
cell1 = coiurse_sheet.cell(1, 1)
cell1.value = '课程名称'
cell2 = course_sheet.cell(4, 4)
cell2.vaule = None #删除单元格内容就是给单元格赋值为None
保存文件
workbook.save('files/student.xlsx')
2.实际的excel文件写操作
import os, openpyxl
1.新建工作簿
如果excel文件存在就打开文件创建工作簿,如果文件不存在就新建这个文件
if os.path.exists('files/goods.xlsx'):
print('文件已经存在,直接打开')
workbook = openpyxl.open('files/goods.xlsx')
else:
print('文件不存在,新建这个文件')
workbook = openpyxl.Workbook()
workbook.save('files/goods.xlsx')
2.新建表
如果指定的表已经存在就直接获取这个表对象,不存就创建对应的表
if '商品' in workbook.sheetnames:
print('获取商品表')
sheet = workbook['商品']
else:
print('新建商品表')
sheet = workbook.create_sheet('商品')
workbook.save('files/goods.xlsx')
3.删除表
如果这个表存在就删除,不存在就不管
if 'Sheet' in workbook.sheetnames:
print('删除表')
workbook.remove(workbook['Sheet'])
workbook.save('files/goods.xlsx')
3.时间模块
form datetime import datetime, date, time
from pyecharts.charts import Bar
1.获取当前时间
datetime.today() - 返回当前时间对应的时间对象
datetime.now() - 返回当前时间对应的时间对象
t1= datetime.today()
print(t1, type(t1))
t2 = datetime.now()
print(t2, type(t2))
2.创建时间对象
t3 = datetime(2020, 10, 3)
print(t3) # 2020-10-03 00:00:00
t4 = datetime(2020, 10, 3, 10, 30)
print(t4) # 2008-08-08 10:30:00
3.将字符串时间转换成时间对象
datetime.strptime(字符串时间, 时间格式)
%Y - 年
%m - 月
%d - 日
%H%I - 时
%N - 分
%S - 秒
str1 = '2003年3月20日'
str2 = '2019-4-5 18:30:57'
t5 = datetime.strptime(str1, '%Y年%m月%d日')
print(t5) # 2003-03-20 00:00:00
t6 = datetime.strptime(str2, '%Y-%m-%d %H:%M:%S')
print(t6) # 2019-04-05 18:30:57
4.基于时间对象获取具体时间值
print(t6.year)
print(t6.month)
print(t6.day)
print(t6.hour)
print(t6.minute)
print(t6.second)
print(t6.weekday()) ## 星期对应的值是0~6,其中0表示周一,6表示周日
5.计算时间差(计算两个时间之间的差值)
t3 = datetime(2020, 10, 5)
t4 = datetime(2020, 10, 3)
dif = t3 - t4 # 两个时间相减会返回一个时间间隔对象
print(dif.days, dif.seconds)
t1 = datetime(2022, 6, 17, 23, 36, 57)
t2 = datetime(2022, 6, 18, 1, 10, 30)
dif = t2 - t1
print(dif.days, dif.seconds)
import openpyxl
def get_all_order():
# workbook = openpyxl.open('files/电商网站订单数据.xlsx')
workbook = openpyxl.open('files/订单数据.xlsx')
# sheet = workbook['Sheet1']
sheet = workbook.active
all_data = []
for row in range(1, sheet.max_row + 1):
line = []
for col in range(1, sheet.max_column + 1):
line.append(sheet.cell(row, col).value)
all_data.append(line)
print(all_data[2])
return all_data
def month_data():
global all_data
result = {}
for x in all_data[1:]:
month = x[-2].month
money = result.get(month, 0)
result[month] = money + x[5]
# 绘制柱状图
result[1] /= 1000
bar = Bar()
bar.add_xaxis(list(result.keys()))
bar.add_yaxis('销售额', list(result.values()))
bar.render('result.html')
if __name__ == '__main__':
all_data = get_all_order()
month_data()