python写入Excel表格的方法详解
程序员文章站
2022-03-02 18:27:25
目录一、写入excel数据二、项目:更新一个电子表格2.1 案例需求2.2 案例源码总结一、写入excel数据週用openpyxl也提供了一些方法写入数据,这意味着你的程序可以创建和编辑电子表格文件。...
一、写入excel数据
週用openpyxl也提供了一些方法写入数据,这意味着你的程序可以创建和编辑电子表格文件。利用python创建一个包含几千行数据的电子表格是非常简单的。
週用openpyxl.workbook()
函数,创建一个新的空workbook对象
本章节所有代码均在jupyter notebook中完成
创建一个新的工作簿对象
import openpyxl wb = openpyxl.workbook() wb
<openpyxl.workbook.workbook.workbook at 0x22473ff4da0>
获取工作表名称
# 查看默认的工作表的名称 wb.sheetnames
[‘sheet’]
给工作表设置名称
# 查看默认的工作表的名称 wb.sheetnames
[‘跟进记录表’]
保存工作表
wb.save('./data/第一个工作簿.xlsx') # 需要给路径地址
创建和删除工作表
- 利用
create_sheet
和del
语法,可以在工作簿中添加或删除工作表, - 在工作簿中添加或删除工作表之后,记得调用
save()
方法来保存变更。
创建sheet
wb = openpyxl.load_workbook('./data/第一个工作簿.xlsx') wb.create_sheet(title='销售记录')
<worksheet “销售记录”>
wb.sheetnames
[‘跟进记录表’, ‘销售记录’]
wb.create_sheet(index=1,title='养殖技术') # index表示新创建的工作簿放在第几个位置 index从0开始计数
<worksheet “养殖技术”>
wb.sheetnames # 0 1 2 从0开始计数
[‘跟进记录表’, ‘养殖技术’, ‘销售记录’]
删除sheet表
del wb['养殖技术'] wb.sheetnames
[‘跟进记录表’, ‘销售记录’]
wb.save('./data/第一个工作簿.xlsx')
千万记住:只有save()
后打开excel表格你做的操作才会显示
将值写入单元格
- 将值写入单元格,很像将值写入字典中的键
- 如果你有单元格坐标的字符串,可以像字典的键一样,将它用于worksheet对象,指定要写入的单元格。
- 最后使用save()进行保存
sheet = wb['销售记录'] sheet['a1'] = 'hello' sheet['b2'] = 'world' wb.save('./data/第一个工作簿.xlsx') # 操作之后一定要保存
二、项目:更新一个电子表格
2.1 案例需求
获取资源:producesales.xlsx 提取码: ge7k
这个项目需要编写一个程序,更新产品销售电子表格中的单元格,程序将遍历这个电子表格,找到特定类型的产品,并更新它们的价格
数据说明
- 每一行代表一次单独的销售。列分别是销售产品的类型(a)、产品每磅的价格(b)、销售的磅数(c),以及这次销售的总收入(d).total列已经设置为excel公式,将每磅的成本乘以销售的磅数,并将结果取整到分。有了这个公式,如果列b或c发生变化,total列中的单元格将自动更新
- 现在假设garlic,celery和lemons的价格输入的不正确。这让你面对一项无聊的任务:遍历这个电子表格中的几万行,更新所有garlic.celery和lemon行中每磅的价格。你不能简单地对价格查找替换,因为可能有其他的产品价格一样,你不希望错误地"更正"。对于几万行数据,手工操作可能要几小时。但你可以编写程序,几秒钟内完成这个任务。
你的程序做下面的事情
- 循环追历所有行。
- 如果该行是garlic,celery或lemons,更新价格。
这意味着代码需要做下面的事情:
- 打开电子表格文件。
- 针对每一行,检查列a的值是不是celery,garlic或lemon,如果是,更新列b中的价格。将该电子表格保存为一个新文件(这样就不会丢失原来的电子表格,以防万一)
需要更新的价格如下
- celery 1.19
- garlic 3.07
- lemon 1.27
2.2 案例源码
import openpyxl print('openning...') wb = openpyxl.load_workbook('./data/producesales.xlsx') sheet = wb['sheet'] # the produce types and their updated prices price_updates = {'garlic': 3.07, 'celery': 1.19, 'lemon': 1.27} # loop through the rows and update the prices. for rownum in range(2, sheet.max_row + 1): # 取出第一列商品的名称 producename = sheet.cell(row=rownum, column=1).value # 如果取出的商品名称在字典中 则需要修改 if producename in price_updates: sheet.cell(row=rownum, column=2).value = price_updates[producename] wb.save('./data/updateproducesales.xlsx') print('finishing...')
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!