下面是Python使用Excel将数据写入多个sheet的完整实例教程。
环境准备
我们需要安装 openpyxl
库,它是一个用于读写Excel文件的Python模块,可以通过以下命令进行安装:
pip install openpyxl
实例说明1
假设我们有一个学生成绩表格,其中有三个学科:语文、数学、英语,现在我们要将学生成绩按照不同学科写入不同的sheet中。
数据如下所示:
姓名 | 语文成绩 | 数学成绩 | 英语成绩 |
---|---|---|---|
小明 | 90 | 80 | 85 |
小红 | 95 | 85 | 90 |
小张 | 80 | 90 | 92 |
小王 | 88 | 92 | 87 |
以下是完整代码示例:
from openpyxl import Workbook
# 表头
header = ["姓名", "语文成绩", "数学成绩", "英语成绩"]
# 成绩数据
data = [["小明", 90, 80, 85],
["小红", 95, 85, 90],
["小张", 80, 90, 92],
["小王", 88, 92, 87]]
# 创建Excel对象
wb = Workbook()
# 创建不同的sheet
for subject in header[1:]:
sheet = wb.create_sheet(subject)
# 写入表头
for col, title in enumerate(header):
sheet.cell(row=1, column=col+1, value=title)
# 写入数据
for row, row_data in enumerate(data):
name, score1, score2, score3 = row_data
sheet.cell(row=row+2, column=1, value=name)
sheet.cell(row=row+2, column=2, value=score1)
sheet.cell(row=row+2, column=3, value=score2)
sheet.cell(row=row+2, column=4, value=score3)
# 保存Excel文件
wb.save("scores.xlsx")
运行上面的代码,可以得到一个名为“scores.xlsx”的Excel文件,其中包含三个sheet,分别为“语文成绩”、“数学成绩”和“英语成绩”,每个sheet中包含对应的学科成绩数据。
实例说明2
假设我们有一个销售数据表格,现在我们要将不同区域的销售数据按照不同的sheet进行分组,并在每个sheet中计算总销售额和平均销售额。
数据如下所示:
区域 | 产品 | 销售额 |
---|---|---|
北京 | A | 100 |
北京 | B | 120 |
上海 | A | 150 |
上海 | B | 130 |
广州 | A | 80 |
广州 | B | 70 |
以下是完整代码示例:
from openpyxl import Workbook
from openpyxl.utils import column_index_from_string
from openpyxl.styles import Alignment, Font
# 表头
header = ["区域", "产品", "销售额"]
# 销售数据
data = [["北京", "A", 100],
["北京", "B", 120],
["上海", "A", 150],
["上海", "B", 130],
["广州", "A", 80],
["广州", "B", 70]]
# 创建Excel对象
wb = Workbook()
# 销售数据按照区域进行分组
groups = {}
for row_data in data:
region, product, sales = row_data
if region not in groups:
groups[region] = []
groups[region].append([product, sales])
# 遍历销售数据分组,并创建不同的sheet
for region, sales_data in groups.items():
sheet = wb.create_sheet(region)
# 写入表头
for col, title in enumerate(header):
sheet.cell(row=1, column=col+1, value=title)
# 写入销售数据
for row, row_data in enumerate(sales_data):
product, sales = row_data
sheet.cell(row=row+2, column=1, value=region)
sheet.cell(row=row+2, column=2, value=product)
sheet.cell(row=row+2, column=3, value=sales)
# 计算总销售额和平均销售额
total_sales = sum([row_data[1] for row_data in sales_data])
avg_sales = total_sales / len(sales_data)
# 合并单元格,并写入总销售额和平均销售额
total_sale_cell = f"C{len(sales_data)+2}"
avg_sale_cell = f"D{len(sales_data)+2}"
sheet.merge_cells(f"A{len(sales_data)+2}:B{len(sales_data)+2}")
sheet.cell(row=len(sales_data)+2, column=1, value="总销售额")
sheet.cell(row=len(sales_data)+2, column=3, value=total_sales)
sheet.cell(row=len(sales_data)+2, column=4, value=avg_sales)
# 设置总销售额和平均销售额单元格格式
sheet[total_sale_cell].alignment = Alignment(horizontal="center")
sheet[total_sale_cell].font = Font(bold=True)
sheet[avg_sale_cell].alignment = Alignment(horizontal="center")
sheet[avg_sale_cell].font = Font(bold=True)
# 保存Excel文件
wb.save("sales.xlsx")
运行上面的代码,可以得到一个名为“sales.xlsx”的Excel文件,其中包含三个sheet,分别为“北京”、“上海”和“广州”,每个sheet中包含对应区域的销售数据以及总销售额和平均销售额。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用Excel将数据写入多个sheet - Python技术站