python实现数据导出到excel的示例–普通格式

  • Post category:Python

下面我就为你详细讲解“Python实现数据导出到Excel的示例–普通格式”的完整实例教程,包含以下内容:

  1. 准备工作:安装openpyxl库和创建Excel文件

  2. 创建Excel文件并写入数据

  3. 添加样式

  4. 示例1:将读取数据库中的数据导出至Excel

  5. 示例2:将从API接口获取的json数据导出至Excel

  6. 完整代码示例

  7. 准备工作:安装openpyxl库和创建Excel文件

在开始之前,需要对Python环境安装openpyxl库。可以使用pip进行安装:

pip install openpyxl

完成安装后,我们需要创建Excel文件。可以直接使用openpyxl库提供的Workbook类进行创建:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

我们先创建一个新的工作簿和一个新的工作表对象,后面将会用到。

  1. 创建Excel文件并写入数据

在我们创建好Excel文件和工作表之后,可以用openpyxl库提供的方法进行数据的写入。例如:

ws['A1'] = 'Name'
ws['B1'] = 'Age'
ws['C1'] = 'Gender'

ws['A2'] = 'Tom'
ws['B2'] = 25
ws['C2'] = 'Male'

ws['A3'] = 'Lisa'
ws['B3'] = 21
ws['C3'] = 'Female'

以上代码将数据写入了工作表的第一行和第二行,并赋值给相应的单元格。

  1. 添加样式

我们现在可以对Excel文件进行更多的调整和美化。比如,我们可以添加单元格字体、颜色、边框等样式。以下是一些基本的例子:

from openpyxl.styles import Font, colors, Border, Side, PatternFill, Alignment

# 单元格字体
font = Font(name='宋体', bold=True, italic=False, strike=False, color=colors.BLACK)
ws['A1'].font = font

# 单元格边框
border = Border(left=Side(border_style='thin', color='000000'),
                right=Side(border_style='thin', color='000000'),
                top=Side(border_style='thin', color='000000'),
                bottom=Side(border_style='thin', color='000000'))
ws['A1'].border = border

# 单元格颜色
fill = PatternFill(fill_type='solid', fgColor=colors.YELLOW)
ws['A2'].fill = fill

# 单元格居中对齐
alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)
ws['A1'].alignment = alignment
  1. 示例1:将读取数据库中的数据导出至Excel

以下是一个简单的实例,用于从SQLite数据库中读取数据,然后将它们导出至Excel文件中。

import sqlite3

# 连接数据库
conn = sqlite3.connect('test.db')
c = conn.cursor()

# 查询数据
c.execute('SELECT * FROM users')
data = c.fetchall()

# 导出数据至Excel文件
for row_index, row in enumerate(data):
    for cell_index, cell_value in enumerate(row):
        ws.cell(row_index+1, cell_index+1, cell_value)

wb.save('data_exported.xlsx')

以上代码连接了SQLite数据库并读取了所有数据行。然后,我们使用双重for循环将数据写入工作表中。

  1. 示例2:将从API接口获取的json数据导出至Excel

以下是另一个示例,用于从API接口获取JSON格式的数据,然后将它们导出至Excel文件。

import requests

# 请求API接口数据
response = requests.get('https://api.github.com/users/github')

# 将结果转换为json
data = response.json()

# 导出数据至Excel文件
for row_index, row in enumerate(data):
    for cell_index, key in enumerate(row.keys()):
        # 写入表头
        if row_index == 0:
            ws.cell(row_index+1, cell_index+1, key)
        ws.cell(row_index+2, cell_index+1, row[key])

wb.save('data_exported.xlsx')

以上代码使用requests库访问了Github API,并将返回的JSON数据转换为Python中的字典数据类型。后续代码中使用双重for循环将数据写入Excel工作表,其中第一行为表头,其余行为数据行。

  1. 完整代码示例

最后,以下是完整的代码示例,展示了如何将数据导出至Excel文件中。具体的细节和样式可以根据需求自行添加。

from openpyxl import Workbook
from openpyxl.styles import Font, colors, Border, Side, PatternFill, Alignment

# 创建Excel文件和工作表
wb = Workbook()
ws = wb.active

# 写入数据
ws['A1'] = 'Name'
ws['B1'] = 'Age'
ws['C1'] = 'Gender'

ws['A2'] = 'Tom'
ws['B2'] = 25
ws['C2'] = 'Male'

ws['A3'] = 'Lisa'
ws['B3'] = 21
ws['C3'] = 'Female'

# 添加样式
font = Font(name='宋体', bold=True, italic=False, strike=False, color=colors.BLACK)
border = Border(left=Side(border_style='thin', color='000000'),
                right=Side(border_style='thin', color='000000'),
                top=Side(border_style='thin', color='000000'),
                bottom=Side(border_style='thin', color='000000'))
fill = PatternFill(fill_type='solid', fgColor=colors.YELLOW)
alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)
for i in range(1, 4):
    ws.cell(row=1, column=i).font = font
    ws.cell(row=1, column=i).border = border
    ws.cell(row=1, column=i).alignment = alignment
for row in ws.iter_rows(min_row=2, max_row=3, min_col=1, max_col=3):
    for cell in row:
        cell.border = border
for cell in ws[2]:
    cell.fill = fill
    cell.border = border

# 示例1:将读取数据库中的数据导出至Excel
import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('SELECT * FROM users')
data = c.fetchall()
for row_index, row in enumerate(data):
    for cell_index, cell_value in enumerate(row):
        ws.cell(row_index+4, cell_index+1, cell_value)

# 示例2:将从API接口获取的json数据导出至Excel
import requests
response = requests.get('https://api.github.com/users/github')
data = response.json()
for row_index, row in enumerate(data):
    for cell_index, key in enumerate(row.keys()):
        if row_index == 0:
            ws.cell(row_index+7, cell_index+1, key)
        ws.cell(row_index+8, cell_index+1, row[key])

# 保存Excel文件
wb.save('data_exported.xlsx')