Day20-excel写操作和时间操作
1、excel文件写操作
import openpyxl
excel文件写操作包括:新建excel文件、新建表、删除表、修改单元格内容
注意:excel文件的写操作,必须保存后才有效。
01. 新建excel文件(新建工作簿)
openpyxl.Workbook()
workbook = openpyxl.Workbook()
02. 保存excel文件
workbook.save(‘files/student.xlsx’)
03.获取工作簿
1)新建excel文件获取工作簿
workbook = openpyxl.Workbook()
2)打开已经存在的excel文件获取工作簿
workbook = openpyxl.open(‘files/student.xlsx’)
04. 新建表
工作簿对象.create_sheet(表名, 表的下标)
sheet1 = workbook.create_sheet()
sheet2 = workbook.create_sheet(‘教师表’)
sheet3 = workbook.create_sheet(‘课程表’, 0)
如果表存在就不新建,表不存在才新建表
if ‘图书表’ not in workbook.sheetnames:
workbook.create_sheet(‘图书表’)
05. 删除表
工作簿对象.remove(表对象)
sheet = workbook[‘Sheet’]
workbook.remove(sheet)
06. 修改单元格内容
单元格对象.value = 数据
course_sheet = workbook[‘课程表’]
cell1 = course_sheet.cell(1, 1)
cell1.value = ‘课程名称’
cell2 = course_sheet.cell(4, 4)
cell2.value = None 删除单元格内容就是给单元格赋值为None
保存文件
workbook.save(‘files/student.xlsx’)
import os, openpyxl
2、实际的excel文件写操作
01. 新建工作簿 - 如果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’)
02. 新建表 - 如果指定的表已经存在就直接获取这个表对象,不存就创建对应的表
if ‘商品’ in workbook.sheetnames:
print(‘获取商品表’)
sheet = workbook[‘商品’]
else:
print(‘新建商品表’)
sheet = workbook.create_sheet(‘商品’)
workbook.save(‘files/goods.xlsx’)
03.删除表 - 如果这个表存在就删除,不存在就不管
if ‘Sheet’ in workbook.sheetnames:
print(‘删除表’)
workbook.remove(workbook[‘Sheet’])
workbook.save(‘files/goods.xlsx’)
3、时间模块
from datetime import datetime, date, time
from pyecharts.charts import Bar
01. 获取当前时间
datetime.today() - 返回当前时间对应的时间对象
datetime.now() - 返回当前时间对应的时间对象
t1 = datetime.today()
print(t1, type(t1))
t2 = datetime.now()
print(t2, type(t2))
02. 创建时间对象
t3 = datetime(2020, 10, 3)
print(t3) # 2020-10-03 00:00:00
t4 = datetime(2008, 8, 8, 10, 30)
print(t4) # 2008-08-08 10:30:00
03. 将字符串时间转换成时间对象
datetime.strptime(字符串时间, 时间格式)
%Y - 年; %m - 月; %d - 日; %H、%I - 时; %M - 分; %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
03.基于时间对象获取具体的时间值
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表示周日
05. 计算时间差(计算两个时间之间的差值)
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()