下面是详细讲解Python操作Excel的方法(xlsxwriter包的使用)的完整实例教程。
1. 前言
Excel在日常工作中是一种非常常见的数据分析和处理工具。Python作为一种高效的编程语言,可以通过xlsxwriter库来实现对Excel文件的读写操作。xlsxwriter是一个强大的Python库,它可以创建和写入Excel的xlsx格式工作簿。
在学习本文时需要先确保已经具备Python的基础知识,如基本语法、类型和函数等,也需要了解Excel的基本概念和操作。
2. 安装xlsxwriter库
在使用xlsxwriter库之前,我们需要先安装它。使用pip可以完成xlsxwriter的安装:
pip install xlsxwriter
3. 创建Excel文件
3.1 创建Excel文件的基本结构
以下是用xlsxwriter创建Excel文件的基本结构:
import xlsxwriter
# 创建一个新的Excel文件
workbook = xlsxwriter.Workbook('test.xlsx')
# 创建工作表worksheet
worksheet = workbook.add_worksheet()
# 写入内容
worksheet.write('A1', 'Hello world!')
# 关闭Excel文件
workbook.close()
以上代码中,首先导入xlsxwriter库,然后通过xlsxwriter.Workbook
函数创建一个新的Excel文件,并将其保存到本地。然后,使用workbook.add_worksheet
函数创建一个名为worksheet
的工作表。接着,使用worksheet.write
函数在表格的A1单元格中写入字符串’Hello world!’。最后,使用workbook.close()
关闭Excel文件。
3.2 向工作表写入数据
向工作表中写入数据是我们最常用的操作之一。使用worksheet.write()
函数可以很容易地实现数据的写入,其语法为:
worksheet.write(row, col, data)
其中,row
和col
表示要写入数据的行数和列数,data
表示要写入的数据。下面是一个例子:
import xlsxwriter
# 创建一个新的Excel文件
workbook = xlsxwriter.Workbook('test.xlsx')
# 创建工作表worksheet
worksheet = workbook.add_worksheet()
# 写入内容
worksheet.write('A1', 'Name')
worksheet.write('B1', 'Age')
worksheet.write('A2', 'Tom')
worksheet.write('B2', 18)
# 关闭Excel文件
workbook.close()
以上代码中,我们首先创建了一个新的Excel文件,并创建了一个名为worksheet
的工作表。然后,我们使用worksheet.write()
函数向工作表中写入数据。注意,在第四行中,我们使用了worksheet.write()
函数写入数字18
,这表明xlsxwriter可以自动地将数字存储为数字类型,而不是字符串类型。
3.3 写入格式化文本
我们可以使用格式化文本来使Excel文件更加美观和易读。在xlsxwriter中,我们可以使用格式化工具对象来设置格式。下面是一个例子:
import xlsxwriter
# 创建一个新的Excel文件
workbook = xlsxwriter.Workbook('test.xlsx')
# 创建工作表worksheet
worksheet = workbook.add_worksheet()
# 设置格式
bold = workbook.add_format({'bold': True})
money = workbook.add_format({'num_format': '$#,##0'})
# 写入内容
worksheet.write('A1', 'Name', bold)
worksheet.write('B1', 'Age', bold)
worksheet.write('C1', 'Salary', bold)
worksheet.write('A2', 'Tom')
worksheet.write_number('B2', 18)
worksheet.write_number('C2', 25000, money)
# 关闭Excel文件
workbook.close()
以上代码中,我们使用workbook.add_format()
函数先定义加粗和货币格式的格式化工具对象,然后使用worksheet.write()
函数在表格中将其应用到文本。在第七行中,我们使用worksheet.write_number()
函数用于写入数字。这样可以让xlsxwriter自动地将数字存储为数字类型而不是字符串类型。
4. 示例
下面是一个根据学生年龄筛选出不同区间人数并绘制成图表的示例:
import xlsxwriter
# 数据
data = [
{'name': 'Tom', 'age': 18},
{'name': 'Jerry', 'age': 20},
{'name': 'John', 'age': 25},
{'name': 'Mike', 'age': 28},
{'name': 'Jack', 'age': 30},
{'name': 'Alex', 'age': 35},
{'name': 'David', 'age': 22},
{'name': 'Peter', 'age': 32},
{'name': 'Frank', 'age': 19},
{'name': 'Jason', 'age': 29},
]
# 创建一个新的Excel文件
workbook = xlsxwriter.Workbook('students.xlsx')
# 创建工作表worksheet
worksheet = workbook.add_worksheet()
# 设置格式
bold = workbook.add_format({'bold': True})
money = workbook.add_format({'num_format': '$#,##0'})
# 写入内容
worksheet.write('A1', 'Name', bold)
worksheet.write('B1', 'Age', bold)
worksheet.write('A2', 'Tom')
worksheet.write_number('B2', 18)
# 统计人数
age_range = [(0, 20), (21, 25), (26, 30), (31, 100)]
counts = [0] * len(age_range)
for d in data:
for i, (start, end) in enumerate(age_range):
if start <= d['age'] <= end:
counts[i] += 1
# 写入统计结果
worksheet.write('C1', 'Age Range', bold)
worksheet.write('D1', 'Number of Students', bold)
for i, r in enumerate(age_range):
worksheet.write('C%d' % (i+2), '%d-%d' % r)
worksheet.write_number('D%d' % (i+2), counts[i])
# 创建图表
chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': '=Sheet1!$D$2:$D$5'})
chart.set_title({'name': 'Student Ages'})
chart.set_x_axis({'name': 'Age Ranges'})
chart.set_y_axis({'name': 'Number of Students'})
# 插入图表
worksheet.insert_chart('F1', chart)
# 关闭Excel文件
workbook.close()
以上代码中,我们首先定义了一个名为data
的学生数据列表。然后,我们创建了一个名为students.xlsx
的Excel文件和一个名为worksheet
的工作表。接着,我们使用worksheet.write()
函数和格式化工具对象,将数据写入到表格中。在第19到26行中,我们统计了不同年龄段的学生人数。最后,我们使用workbook.add_chart()
和worksheet.insert_chart()
函数,创建并插入一个以年龄段为横轴、学生人数为纵轴的柱形图。
5. 结论
这篇教程向你介绍了如何使用Python操作Excel表格。我们学习了如何使用xlsxwriter库来创建Excel文件,向工作表中写入数据,并使用格式化工具对象为文本设置格式。我们还展示了一个示例,该示例演示了如何使用xlsxwriter库统计不同年龄段的学生人数,并绘制成图表。我们希望本文可以帮助你学习如何在Python中操作Excel,提高数据分析和处理的效率。