openpyxl基本操作

发布时间 2023-11-17 10:57:17作者: 悬崖上的金鱼

openpyxl 简介

openpyxl 是一个用于读取和写入Excel文件的Python库。它提供了强大的功能,允许用户操作Excel文件,包括创建新文件、读取现有文件、修改文件内容以及设置单元格的格式和样式。以下是一些关键的特性和信息:

  • 创建和修改Excel文件: openpyxl 允许用户创建新的Excel文件,并可以在已有文件上进行修改。这对于自动化生成报表、数据处理等任务非常有用。

  • 支持Excel文件格式: openpyxl 主要支持 Excel 2010 及更高版本的 .xlsx 文件格式,是一种现代的、基于 XML 的文件格式。

  • 强大的功能: 该库提供了许多功能,如处理图表、图像、公式等,使得用户能够更全面地操作Excel文件。

  • 支持样式和格式设置: 用户可以使用 openpyxl 设置单元格的字体、对齐方式、背景色等样式,以及设置列宽、行高等格式。

  • 易于使用: openpyxl 提供了直观的API,容易上手,同时也有丰富的文档和社区支持。

简单示例

如何使用 openpyxl 创建一个Excel文件并写入数据:

from openpyxl import Workbook

# 创建一个新的Excel文件
workbook = Workbook()
sheet = workbook.active

# 写入数据到单元格
sheet['A1'] = 'Hello'
sheet['B1'] = 'World!'

# 保存文件
workbook.save('example.xlsx')

二维列表数据写入Excel(一)

按行存储在list的数据写入Excel

from openpyxl import Workbook

# 创建一个工作簿
wb = Workbook()
ws = wb.active

# 定义列表数据
data = [
    ['id', '姓名', '国家'],
    [1.0, '曹操', '魏国'],
    [2.0, '刘备', '蜀国'],
    [3.0, '孙权', '吴国'],
    [4.0, '荀彧', '魏国'],
    [5.0, '诸葛亮', '蜀国'],
    [6.0, '周瑜', '吴国'],
    [7.0, '曹仁', '魏国'],
    [8.0, '关羽', '蜀国'],
    [9.0, '吕蒙', '吴国']
]

# 将数据写入工作表
for row in data:
    ws.append(row)

# 保存工作簿到Excel文件
wb.save('output.xlsx')

二维列表数据写入Excel(二)

按列存储在list的数据写入Excel

from openpyxl import Workbook
#
创建一个工作簿 workbook = Workbook() sheet = workbook.active data = [ ['id', 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0], ['姓名', '曹操', '刘备', '孙权', '荀彧', '诸葛亮', '周瑜', '曹仁', '关羽', '吕蒙'], ['国家', '魏国', '蜀国', '吴国', '魏国', '蜀国', '吴国', '魏国', '蜀国', '吴国'] ] # 将数据按列写入工作表 for col in zip(*data): sheet.append(col) # 保存工作簿到Excel文件 workbook.save('output_column.xlsx')

把pymysql获取的结果集写入Excel

获取列名

# 获取列名(即各个字段名)
column_names = [i[0] for i in cursor.description]

写入列名到工作表中

# 写入列名到工作表中
for col_index, column_name in enumerate(column_names):
    sheet.cell(row=1, column=col_index+1).value = column_name

写入数据到工作表中

row_index = 2
for row in cursor:
    for col_index, value in enumerate(row):
        sheet.cell(row=row_index, column=col_index+1).value = value
    row_index += 1

完整代码

import openpyxl
import pymysql

# 建立数据库连接
connection = pymysql.connect(
    host='localhost',
    user='root',
    password='123456',
    database='caiwu'
)

# 创建工作簿对象
workbook = openpyxl.Workbook()

# 创建工作表对象
sheet = workbook.active

# 编写SQL查询语句
query = "SELECT * FROM report_品名"

# 创建游标对象
cursor = connection.cursor()

# 执行SQL查询
cursor.execute(query)

# 获取列名(即各个字段名)
column_names = [i[0] for i in cursor.description]

# 写入列名到工作表中
for col_index, column_name in enumerate(column_names):
    sheet.cell(row=1, column=col_index+1).value = column_name

# 写入数据到工作表中
row_index = 2
for row in cursor:
    for col_index, value in enumerate(row):
        sheet.cell(row=row_index, column=col_index+1).value = value
    row_index += 1


# 关闭游标对象
cursor.close()

# 关闭数据库连接
connection.close()

# 保存Excel文件
workbook.save('output.xlsx')