本文目录导读:

- Python 脚本(最灵活,适合复杂数据处理)
- SQL 脚本(适合数据库管理员)
- Shell + 命令行工具(轻量级,适合Linux服务器)
- 专业报表工具(低代码/可视化)
- 企业级一站式自动化方案(推荐尝试)
- 总结建议
Python 脚本(最灵活,适合复杂数据处理)
Python 是生成报表的首选,配合 pandas(数据处理)和 openpyxl / xlsxwriter(Excel写入)或 matplotlib / plotly(图表)。
从 CSV/数据库生成 Excel 报表
场景:每日从数据库导出数据,自动生成格式化的销售/运营报表。
import pandas as pd
from datetime import date, timedelta
# 1. 读取数据 (假设CSV,也可以是数据库)
yesterday = date.today() - timedelta(days=1)
df = pd.read_csv(f'report_{yesterday}.csv')
# 2. 数据清洗与统计
summary = df.groupby('部门').agg({
'销售额': 'sum',
'订单数': 'count'
}).reset_index()
# 3. 写入Excel,并设置格式
with pd.ExcelWriter(f'日报_{yesterday}.xlsx', engine='openpyxl') as writer:
summary.to_excel(writer, sheet_name='汇总', index=False)
# 可以写入多个sheet:原始数据、图表数据等
print(f"报表已生成:日报_{yesterday}.xlsx")
带图表的自动化周报
场景:生成带折线图和饼图的周报。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_sql('SELECT * FROM weekly_sales', connection)
# 生成图表
plt.figure(figsize=(10,6))
plt.plot(df['日期'], df['收入'], marker='o')
plt.savefig('weekly_chart.png')
# 写入Excel时嵌入图片
from openpyxl import Workbook
from openpyxl.drawing.image import Image
wb = Workbook()
ws = wb.active
ws['A1'] = '周报自动生成'
img = Image('weekly_chart.png')
ws.add_image(img, 'C1')
wb.save('周报.xlsx')
邮件自动发送报表
场景:脚本生成后自动发送给团队。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
# 附件就是上面生成的report.xlsx
msg = MIMEMultipart()
with open('report.xlsx', 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename='日报.xlsx')
msg.attach(part)
# 发送(使用公司的SMTP服务器)
server = smtplib.SMTP('smtp.company.com')
server.sendmail('from@company.com', ['manager@company.com'], msg.as_string())
SQL 脚本(适合数据库管理员)
直接用 SQL 生成汇总表,并导出为 CSV(很多数据库工具支持自动导出)。
MySQL / PostgreSQL 生成周汇总
-- 将汇总结果插入统计表或直接导出
SELECT
DATE_FORMAT(order_date, '%Y-%u') AS 周数,
SUM(amount) AS 总销售额,
COUNT(DISTINCT user_id) AS 活跃用户
FROM orders
WHERE order_date >= CURDATE() - INTERVAL 7 DAY
GROUP BY 周数
INTO OUTFILE '/tmp/weekly_summary.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"';
存储过程自动生成日报表(SQL Server)
CREATE PROCEDURE GenerateDailyReport
AS
BEGIN
DECLARE @today DATE = GETDATE();
-- 插入到报表历史表
INSERT INTO ReportHistory (ReportDate, Metric, Value)
SELECT @today, '新注册用户', COUNT(*) FROM Users WHERE CreatedDate = @today;
-- 同时输出结果(可被调度任务捕获)
SELECT * FROM ReportHistory WHERE ReportDate = @today;
END;
Shell + 命令行工具(轻量级,适合Linux服务器)
使用 csvkit + awk 生成统计
#!/bin/bash
# 每天凌晨运行:从日志生成CSV报表
INPUT_FILE="/var/log/app/access.log"
OUTPUT_FILE="/reports/daily_report_$(date +%Y%m%d).csv"
# 统计状态码分布
grep "$(date +%Y-%m-%d)" $INPUT_FILE | awk '{print $9}' | sort | uniq -c | \
awk -v date=$(date +%Y-%m-%d) 'BEGIN{print "Date,Status,Count"} {print date","$2","$1}' > $OUTPUT_FILE
echo "Report generated: $OUTPUT_FILE"
使用 crontab 定时执行
# 每天上午8点运行Python脚本 0 8 * * * /usr/bin/python3 /scripts/generate_report.py # 每周一运行SQL导出 0 7 * * 1 psql -U dbuser -d dbname -f /sql/weekly_report.sql -o /reports/week.csv
专业报表工具(低代码/可视化)
如果不想写太多脚本,以下工具内置了强大的自动化机制:
| 工具 | 特点 | 适用场景 |
|---|---|---|
| Power BI / Tableau | 连接数据源后,自动刷新报表 | 企业级商业智能 |
| Google Data Studio | 免费,连接Google Sheets/数据库 | 团队协作,定期邮件 |
| Metabase | 开源,允许SQL查询并定时推送 | 中小公司内部数据 |
| Apache Superset | 支持复杂SQL,图表丰富,可定时导出 | 数据仓库报表 |
企业级一站式自动化方案(推荐尝试)
如果您希望零代码、开箱即用,可以采用 SeaTable 智能表格 这类工具:
- 脚本功能:内置 Python 运行环境,可编写脚本自动读取表格数据、生成统计表。
- 触发器:可设置“当新增记录时”自动运行脚本生成报表。
- 可视化:直接基于表格数据生成动态图表,无需写代码。
总结建议
- 个人 / 小型团队:首选 Python (pandas) + crontab,灵活且免费。
- 公司数据库管理员:使用 SQL 存储过程 + 定时任务。
- 非技术人员:考虑 Power BI / SeaTable 等可视化工具。
您目前需要处理的数据源是什么?是 Excel 文件、MySQL 数据库,还是 API 接口?告诉我具体场景,我可以为您提供更精确的 10-20 行核心脚本。