ai_member_xiaokui/scripts/export_wechat_june.py
2026-06-23 08:10:01 +08:00

74 lines
2.3 KiB
Python

#!/usr/bin/env python3
"""导出6月份微信反馈数据到 Excel"""
import pymysql
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill
from datetime import datetime
conn = pymysql.connect(
host='bj-cdb-8frbdwju.sql.tencentcdb.com',
port=25413,
user='chatbot',
password='xhuBx7d@uT2gUVv',
database='vala_test',
charset='utf8mb4'
)
cursor = conn.cursor()
cursor.execute("""
SELECT
id, sender_name, msg_type, content, msg_time, svr_msg_id, refer_msg_svrid
FROM wechat_group_message
WHERE msg_time >= '2026-06-01' AND msg_time < '2026-07-01'
ORDER BY msg_time ASC
""")
rows = cursor.fetchall()
cursor.close()
conn.close()
print(f"{len(rows)} 条记录")
wb = Workbook()
ws = wb.active
ws.title = "6月微信反馈"
# Headers
headers = ['序号', '发送者', '消息类型', '消息内容', '发送时间', '消息ID', '引用消息ID']
header_fill = PatternFill(start_color="4472C4", end_color="4472C4", fill_type="solid")
header_font = Font(name='微软雅黑', bold=True, color="FFFFFF", size=11)
data_font = Font(name='微软雅黑', size=10)
for col, h in enumerate(headers, 1):
cell = ws.cell(row=1, column=col, value=h)
cell.fill = header_fill
cell.font = header_font
cell.alignment = Alignment(horizontal='center', vertical='center')
for i, row in enumerate(rows, 2):
ws.cell(row=i, column=1, value=i-1).font = data_font
ws.cell(row=i, column=2, value=row[1]).font = data_font
ws.cell(row=i, column=3, value=row[2]).font = data_font
ws.cell(row=i, column=4, value=row[3] or '').font = data_font
ws.cell(row=i, column=5, value=str(row[4])).font = data_font
ws.cell(row=i, column=6, value=str(row[5]) if row[5] else '').font = data_font
ws.cell(row=i, column=7, value=str(row[6]) if row[6] else '').font = data_font
# Column widths
ws.column_dimensions['A'].width = 6
ws.column_dimensions['B'].width = 28
ws.column_dimensions['C'].width = 12
ws.column_dimensions['D'].width = 80
ws.column_dimensions['E'].width = 20
ws.column_dimensions['F'].width = 22
ws.column_dimensions['G'].width = 22
# Freeze header
ws.freeze_panes = 'A2'
# Auto-filter
ws.auto_filter.ref = f"A1:G{len(rows)+1}"
output_path = '/root/.openclaw/workspace-xiaokui/output/微信反馈_2026年6月.xlsx'
wb.save(output_path)
print(f"已保存到: {output_path}")