文章目录
- 安装模块
- 读取Excel
- 数据库取数
- 匹配数据和更新Excel数据
在Ubuntu系统的环境下基本职能借助Python的openpyxl模块实现对Excel数据的操作。
安装模块
本次需要用到的模块需要提前安装(如果没有的话)
pip3 install openpyxl
pip3 install pymysql
在操作前,需要准备好用于操作的Excel文件,假设其文件名为 example.xlsx
。
此外,还需准备好相应的数据库,本文以MySQL 5.7数据库为例,确保数据库中包含相应的数据表及数据。
读取Excel
使用openpyxl模块读取Excel文件中的数据,可参考以下代码示例:
from openpyxl import load_workbook
# 加载Excel文件
workbook = load_workbook('example.xlsx')
# 选择活动工作表
sheet = workbook.active
# 读取数据并存储
rows = sheet.max_row
cols = sheet.max_column
data_list = []
for row in range(1, rows + 1):
row_data = []
for col in range(1, cols + 1):
cell_value = sheet.cell(row=row, column=col).value
row_data.append(cell_value)
data_list.append(row_data)
# 显示读取的数据
for row in data_list:
print(row)
上述代码将Excel文件中的数据读取并存储到 data_list
列表中,以便后续与数据库数据进行匹配。
数据库取数
以下是连接数据库并进行简单查询的代码示例:
import pymysql
# 连接数据库
connection = pymysql.connect(
host='localhost',
user='root',
password='your_password',
database='your_database',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
with connection.cursor() as cursor:
# 查询数据
search_value = data_list[0][0] # 以data_list第一个元素的第一列的值作为搜索条件
sql = "SELECT * FROM your_table WHERE some_column = %s"
cursor.execute(sql, (search_value,))
result = cursor.fetchall()
# 显示匹配结果
for row in result:
print(row)
finally:
connection.close()
在使用过程中,需要根据实际情况修改连接参数及查询语句中的相关字段。
匹配数据和更新Excel数据
假设匹配到的数据存储在 result
列表中,现在需要将匹配结果更新回Excel数据中,具体操作如下:
from openpyxl import Workbook
# 创建新的工作簿
workbook = load_workbook('example.xlsx')
sheet = workbook.active
# 写入表头信息
sheet['A'] = '原数据'
sheet['B'] = '匹配结果'
# 将原数据和新列写入Excel
for i, row in enumerate(data_list, start=1):
sheet.cell(row=i, column=1).value = row
matched = False
for res in result:
if row[0] == res['col']: # 假设匹配字段在第一列且数据库查询结果字段名为'col'
sheet.cell(row=i, column=2).value = '匹配成功'
matched = True
break
if not matched:
sheet.cell(row=i, column=2).value = '无匹配数据'
# 保存更新后的新工作簿
workbook.save('matched_data.xlsx')