[Python/VBA] Excel 通过 Python 连接数据库
使用 Python 中的 xlwings 模块即可以利用 Python 处理数据的便捷性,又可以像写 VBA 一样操作 Excel
1. Excel 从数据库取数
以下函数写在 funcs.py 文件中
import xlwings as xw
import numpy as np
import pandas as pd
from datetime import datetime
from sqlalchemy import create_engine
db_url = mysql+pymysql://uid:pwd@ip:port/db_name?charset=utf8
conn = create_engine(db_url, echo=False, encoding=utf8)
def get_data():
wb = xw.Book.caller()
sht = wb.sheets.active
sql = select * from test
df = pd.read_sql(sql, con=conn) # 读取数据表
sht.range(A1).options(index=False, header=True).value = df # 将数据存入 Excel 表
2. 将 Excel 表保存到数据库
def save_data():
wb = xw.Book.caller()
sht = wb.sheets.active
df = sht.range(A1).options(pd.DataFrame, expand=table).value
df.to_sql(test,con=conn,if_exists=replace,index=False,chunksize=100000)
3. Excel 中调用 Python 函数
Sub getData()
RunPython ("import funcs; funcs.get_data()")
MsgBox "获取完成"
End Sub
Sub saveData()
RunPython ("import funcs; funcs.save_data()")
MsgBox "保存完成"
End Sub
