python 操作 Excel 之写入
假如wb是工作簿(workbook)对象,ws是表单(worksheet)对象:
1、通过对wb.title赋值可以改变表单名称
2、wb.create_sheet(index=表单排位,title='表单名') 添加或插入一张表单
wb.remove_sheet(wb.get_sheet_by_name('表单名') 删除表单
3、wb.get_sheet_names() 能得到所有表单名
4、ws['B3'] = '你想填啥就填啥‘,更可以双层循环对单元格进行赋值(数据可以从外部文件获取)
5、ws.append(整串数据,可以是列表,也可以是range()产生的序列)
创建并保存 Excel 文档
调用 openpyxl.Workbook()函数,创建一个新的空 Workbook 对象。
工作簿将从一个工作表开始,名为 Sheet。你可以将新的字符串保存在它的 title 属性中,从而改变工作表的名字。 当修改Workbook对象或它的工作表和单元格时,电子表格文件不会保存,除非你调 用 save()工作簿方法
1 2 3 4 5 6 7 8 9 | import openpyxl from openpyxl.utils import get_column_letter wb = openpyxl.Workbook() sheet = wb.active # # change the name of the sheet print (sheet.title) sheet.title = 'Happy2017' |
创建和删除工作表
利用 create_sheet() 和 remove_sheet()方法,可以在工作簿中添加或删除工作表。
create_sheet()方法返回一个新的 Worksheet 对象,名为 SheetX,它默认是工作 簿的最后一个工作表。或者,可以利用 index 和 title 关键字参数,指定新工作表的 索引或名称。 继续前面的例子,输入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import openpyxl from openpyxl.utils import get_column_letter wb = openpyxl.Workbook() sheet = wb.active wb.create_sheet(index = 0 , title = 'First Sheet' ) wb.create_sheet(index = 1 , title = 'Middle Sheet' ) print (wb.get_sheet_names()) # 获取当前工作薄的名字 wb.remove_sheet(wb.get_sheet_by_name( 'Middle Sheet' )) print (wb.get_sheet_names()) wb.save( 'temp1.xlsx' ) |
将值写入单元格
将值写入单元格,很像将值写入字典中的键。
1 2 3 4 5 6 | >>> import openpyxl >>> wb = openpyxl.Workbook() >>> sheet = wb[ 'Sheet' ] >>> sheet[ 'A1' ] = 'Hello world!' >>> sheet[ 'A1' ].value 'Hello world!' |
批量的进行写入
import openpyxl from openpyxl.utils import get_column_letter wb = openpyxl.Workbook() sheet = wb.active ws1 = wb.create_sheet('range names') # 生成一个0到17个数写入(1-39行) for row in range(1, 40): ws1.append(range(17)) ws2 = wb.create_sheet('List') # 从数组中写入 rows = [ ['Number', 'Batch 1', 'Batch2'], [2, 40, 30], [3, 40, 25], [4, 50, 30], [5, 30, 10], [6, 40, 30], [7, 78, 52], ] for row in rows: ws2.append(row) ws3 = wb.create_sheet(title='Data') # 指定行和列进行写入 for row in range(5, 30): for col in range(15, 54): ws3.cell(column=col, row=row, value=get_column_letter(col)) print(ws3['AA10'].value) wb.save(filename='empty_book.xlsx')
小案例: 修改excel中指定的一部分数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import openpyxl # The product types and their updated prices PRICE_UPDATE = { 'Garlic' : 3.17 , 'Celery' : 1.19 , 'Lemon' : 1.27 } wb = openpyxl.load_workbook( 'produceSales.xlsx' ) ws = wb.get_sheet_by_name( 'Sheet' ) # loop through the rows and update the prices, skip the first row for rowNum in range ( 2 , ws.max_row + 1 ): productName = ws.cell(row = rowNum, column = 1 ).value if productName in PRICE_UPDATE: ws.cell(row = rowNum, column = 2 ).value = PRICE_UPDATE[productName] wb.save( 'updateProduceSales.xlsx' ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理