[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

你可能感兴趣的:(Python,VBA,xlwings,vba,python,mysql)