You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python将Postgres表数据按日期追加导出到现有Excel实现自动化

问题解答:Python实现Postgres数据追加写入现有Excel

完全支持该需求,整套自动化流程可以通过Python常用库实现,无需手动操作。

实现依赖库

  • 数据库操作:psycopg2 / sqlalchemy(用来连接Postgres查询指定日期的增量数据)
  • Excel操作:openpyxl(支持读写现有xlsx文件,不会覆盖原有内容)
  • 数据处理:pandas(简化数据查询、格式转换和写入逻辑,可选但推荐使用)

核心实现逻辑

  1. 增量数据查询:每次运行时按日期维度筛选Postgres表中对应日期的新增数据,避免重复写入
  2. 现有Excel读取:打开目标Excel工作表,定位到已有数据的最后一行的下一行作为追加写入的起始位置
  3. 格式兼容写入:写入新数据时保留原Excel工作表的格式、公式、其他工作表内容不受影响
  4. 定时调度:可通过系统定时任务(Windows任务计划程序、Linux crontab)实现每日自动运行,无需人工干预

示例代码

import pandas as pd
from sqlalchemy import create_engine
from openpyxl import load_workbook

# ---------------------- 配置项 ----------------------
# Postgres连接配置
PG_CONN = "postgresql://用户名:密码@数据库地址:端口/数据库名"
# 目标Excel路径
EXCEL_PATH = "你的目标文件.xlsx"
# 目标工作表名称
SHEET_NAME = "数据汇总表"
# 每日查询的日期,默认取前一天的数据,可按需调整
query_date = pd.Timestamp.now().date() - pd.Timedelta(days=1)

# ---------------------- 1. 从Postgres查询增量数据 ----------------------
engine = create_engine(PG_CONN)
# 按日期筛选增量数据,把表名和日期字段替换成你自己的
sql = f"""
SELECT * FROM 你的表名 
WHERE 日期字段 = '{query_date}'
"""
df_new = pd.read_sql(sql, engine)

# ---------------------- 2. 追加写入现有Excel ----------------------
# 加载现有Excel文件
book = load_workbook(EXCEL_PATH)
writer = pd.ExcelWriter(EXCEL_PATH, engine='openpyxl', mode='a', if_sheet_exists='overlay')
writer.workbook = book
writer.sheets = {ws.title: ws for ws in book.worksheets}

# 定位到已有数据的最后一行,跳过表头
start_row = writer.sheets[SHEET_NAME].max_row

# 写入新数据,不写表头,不覆盖原有内容
df_new.to_excel(writer, sheet_name=SHEET_NAME, startrow=start_row, index=False, header=False)

# 保存关闭
writer.close()
engine.dispose()

注意事项

  • 如果你的Excel是xls格式(Excel 97-2003版本),需要换成xlrd+xlwt组合实现,更推荐先把文件转成xlsx格式使用
  • 首次运行前建议备份原有Excel文件,避免配置错误导致数据丢失
  • 增量查询的SQL可根据实际业务调整筛选条件,不局限于日期维度,也可按主键自增ID等逻辑筛选新增数据
  • 定时调度时注意配置运行环境的Python依赖库权限,以及Excel文件的读写权限

内容的提问来源于stack exchange,提问作者Green

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:27:03