Python写入Excel
前言:前面系列篇已经讲解过如何使用Python读取Excel表格中的数据,并对数据进行读取后的处理。今天简单介绍下Python写入Excel的方法并举例说明如何应用。
表单的增、删、写、存操作
# 新建工作簿
wb = openpyxl.Workbook()
print(wb)
sheet = wb.active
print(sheet.title)
# 重命名表单
sheet.title = 'happy2021'
print(wb.get_sheet_names) # 这种方法会出现弃用警告,推荐下面的方法
print(wb.sheetnames)
# 保存工作簿
wb.save('original.xlsx')
# 新建表单并指定索引值
# 说明:表单的索引位置从0开始,如果创建表单的时候不指定索引值,默认在现有的表单后继续创建。
wb.create_sheet('first.xlsx', index=0)
wb.create_sheet('second.xlsx', index=1)
print(wb.sheetnames)
# 删除表单
wb.remove_sheet(wb.get_sheet_by_name('first.xlsx')) # 这种方法会出现弃用警告,推荐下面的方法
wb.remove(wb['first.xlsx']) # 括号内是表单对象
del wb['second.xlsx'] # 括号内是表单名称
print(wb.sheetnames)
wb.save('temp1.xlsx') # 进行增、删、改操作最后都需要保存下
# 往单元格中写入值
# 说明:这点和往字典中增加键值对的方法类似,可进行对比学习。
wb = openpyxl.Workbook()
sheet = wb.active
sheet['A1'] = 'Hello python'
print(sheet['A1'].value)
Python写入Excel的几个实例
ws1 = wb.create_sheet('range names')
for row in range(40):
ws1.append(range(17)) # append()内传入的是每一行对应的各列的取值范围,可以是列表、字典、元组、range等
ws2 = wb.create_sheet('List')
rows = [
['Number', 'Batch1', 'Batch2'],
[2, 40, 30],
[3, 45, 60],
[4, 36, 55],
[5, 66, 88],
[6, 78, 99]
]
for row in rows:
ws2.append(row)
ws3 = wb.create_sheet('Data')
for row in range(5, 30):
for col in range(15, 50):
ws3.cell(row=row, column=col, value=get_column_letter(col)) # 将列对应的数字转换成字符串作为单元格的值
wb.save('write_excel.xlsx')
# 上面3张表单生成以后效果如下:
实际应用场景
下面给定了一张超市农产品的价格表,要完成对表单中部分农产品的价格更新。
文件下载链接:https://pan.baidu.com/s/1ly0C3anyNvBDbkb4omv_OA
提取码:ey30
# 待更新的农产品名称(大蒜、芹菜、柠檬)及对应的价格,我们存储在一个字典对象中:price_update = {'Garlic': 3.17, 'Celery': 1.19, 'Lemon': 1.17}
# 解题思路:遍历整个农产品价格表,判断每一行取出的农产品名称是否存在price_update字典中,存在则更新对应价格;不存在,则跳过这一行。
wb = openpyxl.load_workbook(r'D:\zxt\produceSales.xlsx')
ws = wb.active
price_update = {'Garlic': 3.17, 'Celery': 1.19, 'Lemon': 1.17}
for rowNum in range(2, ws.max_row+1):
# 取出表单中每一行第一列的农产品名称
produce = ws.cell(row=rowNum, column=1).value # 这里produce是农产品的意思
# 判断农产品产品名称是否存在于待更新的字典中
if produce in price_update.keys():
ws.cell(row=rowNum, column=2).value = price_update[produce]
pass
# 将更新后的文件的另存为updateProduceSales.xlsx,防止程序出错,覆盖原文件数据
wb.save('updateProduceSales.xlsx')
# 查看更新后的updateProduceSales.xlsx如下:,结果显示价格更新成功。
最后,喜欢的朋友点赞、推荐下,后续精彩内容持续更新中,敬请关注!