
你有没有过这样的经历:月底汇总销售数据,先用 Excel 做一张柱状图,调成领导喜欢的颜色,加上数据标签;再画一张折线图看趋势;最后还得配上饼图看占比。好不容易做完,领导说再加一个 KPI 卡片和业绩进度条……一套操作下来一下午就过去了。更崩溃的是下个月数据更新后,所有图表都得从头来过。
如果有一个工具,只需把数据放进 Excel,双击一下鼠标,自动生成一个带 KPI、趋势、占比、表格的交互式大屏,而且是酷炫的深色科技风,可以直接在浏览器里交互查看,还能把网页发给同事,让对方一点就开——你想不想要?
今天我就带你把这件事变成现实。我们用 Python 写一个不到 80 行的脚本(看起来多,但大部分是自动美化,你根本不需要理解),然后打包成 exe 文件,以后每次更新数据,双击 exe,大屏秒出。

一、最终效果长什么样?(拷贝代码执行去!!!)
运行这个程序后,你的默认浏览器会自动打开一个网页,上面整整齐齐地排列着:
顶部一行 4 个 KPI 卡片:总销售额、总订单数、平均客单价、覆盖区域数,数字醒目。
左中一张柱状图:各区域销售额对比,鼠标悬停显示具体数字。
右中一张折线图:全年的销售趋势,带数据点和平滑曲线。
左下环形饼图:产品类别占比,中间空洞设计,点击图例可隐藏/显示。
右下数据表格:各区域销售额汇总,带颜色表头。
最底部仪表盘:业绩达成率进度条,直观显示是否达标。
整个大屏采用深色主题,科技感满满,右下角有工具栏可以缩放、拖拽,甚至可以下载成 PNG 高清图片。这个网页文件你还可以直接发给领导,对方用浏览器就能看,完全不需要 Python 环境。

二、准备工作:只需安装两个库
如果你电脑上还没有 Python,不用担心,文末会教你请 IT 同事帮忙一次性打包成 exe,之后你只用双击鼠标。
如果已经装了 Python(或想先跑跑看),只需在命令行(Win+R 输入 cmd 回车)执行下面两行,安装依赖库:
pip install pandas plotly大概一分钟就能装好,接下来我们就可以开始写代码了。

三、完整代码(复制粘贴即用)
下面的代码分两部分,合在一起保存成一个 .py 文件,例如 数据大屏.py:
自动生成示例数据(让你立刻看到效果,真实使用时可以删掉或替换为自己的文件)
数据大屏生成主程序
3.1 自动生成示例数据(省去你手动建 Excel 的麻烦)
import pandas as pdimport numpy as np# 生成 200 行模拟销售数据np.random.seed(42)dates = pd.date_range('2024-01-01', periods=100, freq='D')regions = ['华东', '华南', '华北', '西部']products = ['食品', '饮料', '电子', '服装']data = {'日期': np.random.choice(dates, 200),'区域': np.random.choice(regions, 200),'产品类别': np.random.choice(products, 200),'销售额': np.random.randint(5000, 50000, 200)}df = pd.DataFrame(data)df.to_excel('销售明细.xlsx', index=False)print("示例数据已生成:销售明细.xlsx")
3.2 主程序:读取数据并生成深色科技风大屏
import pandas as pdimport plotly.graph_objects as gofrom plotly.subplots import make_subplotsimport webbrowser# ---------- 读取数据 ----------df = pd.read_excel("销售明细.xlsx", sheet_name="Sheet1")# 计算核心指标总销售额 = df['销售额'].sum()总订单数 = len(df)平均客单价 = 总销售额 / 总订单数区域数 = df['区域'].nunique()# 汇总数据区域汇总 = df.groupby('区域', as_index=False)['销售额'].sum()月度趋势 = df.groupby('日期', as_index=False)['销售额'].sum()产品占比 = df.groupby('产品类别', as_index=False)['销售额'].sum()# ---------- 构建大屏布局 ----------fig = make_subplots(rows=4, cols=4,row_heights=[0.15, 0.4, 0.3, 0.15],column_widths=[0.25, 0.25, 0.25, 0.25],specs=[# 第一行:4个KPI卡片[{"type": "indicator"}, {"type": "indicator"}, {"type": "indicator"}, {"type": "indicator"}],# 第二行:柱状图(占两格) + 折线图(占两格)[{"type": "bar", "colspan": 2}, None, {"type": "scatter", "colspan": 2}, None],# 第三行:饼图(占两格) + 表格(占两格)[{"type": "pie", "colspan": 2}, None, {"type": "table", "colspan": 2}, None],# 第四行:仪表盘进度条(占一整行)[{"type": "indicator", "colspan": 4}, None, None, None]],subplot_titles=("总销售额", "总订单数", "平均客单价", "覆盖区域","各区域销售额", "月度趋势", "产品占比", "销售明细","业绩达成率"))# ---------- 填充图表内容 ----------# 1. 顶部 KPI 卡片fig.add_trace(go.Indicator(mode="number", value=总销售额,number={'prefix':'¥', 'valueformat':',.0f'},title="总销售额"), row=1, col=1)fig.add_trace(go.Indicator(mode="number", value=总订单数,title="总订单数"), row=1, col=2)fig.add_trace(go.Indicator(mode="number", value=平均客单价,number={'prefix':'¥', 'valueformat':'.0f'},title="平均客单价"), row=1, col=3)fig.add_trace(go.Indicator(mode="number", value=区域数,title="覆盖区域"), row=1, col=4)# 2. 柱状图(各区域销售额)fig.add_trace(go.Bar(x=区域汇总['区域'], y=区域汇总['销售额'],marker_color='#636EFA'), row=2, col=1)# 3. 折线图(月度趋势)fig.add_trace(go.Scatter(x=月度趋势['日期'], y=月度趋势['销售额'],mode='lines+markers', line_color='#EF553B'), row=2, col=3)# 4. 饼图(产品占比)fig.add_trace(go.Pie(labels=产品占比['产品类别'], values=产品占比['销售额'],hole=0.4), row=3, col=1)# 5. 数据表格fig.add_trace(go.Table(header=dict(values=['区域', '销售额'], fill_color='royalblue',font=dict(color='white')),cells=dict(values=[区域汇总['区域'], 区域汇总['销售额']],fill_color='lavender')), row=3, col=3)# 6. 底部仪表盘(业绩达成率)目标销售额 = 总销售额 * 1.2 # 假设目标是实际销售额的1.2倍,你可以修改完成率 = 总销售额 / 目标销售额 * 100fig.add_trace(go.Indicator(mode="gauge+number+delta",value=完成率,delta={'reference': 100},gauge={'axis': {'range': [0, 100]}, 'bar': {'color': "darkblue"}},title={'text': "业绩达成率 (%)"}), row=4, col=1)# ---------- 美化:深色科技风 ----------fig.update_layout(template="plotly_dark",title_text="销售数据可视化大屏 · 2024年度",title_font_size=22,height=900,showlegend=False)# ---------- 保存并自动打开 ----------output_file = "销售大屏.html"fig.write_html(output_file)webbrowser.open(output_file)print(f"大屏已生成:{output_file}")
把上面两部分代码粘贴到一个新建的 .py 文件里,放在你想要存放结果的文件夹,然后双击运行(或者命令行 python 数据大屏.py)。
第一次运行时,它会在当前文件夹生成一个 销售明细.xlsx(示例数据),然后自动打开浏览器展示你专属的可视化大屏。以后只需要更新你的 Excel 文件,再次运行就能得到最新的大屏。

四、如何把它变成你自己的工具?
你只需要修改三处地方,就能把这个通用模板变成适用于你实际业务的专属工具:
替换数据源:如果你的 Excel 文件名不是 销售明细.xlsx,就把代码里的 df = pd.read_excel("销售明细.xlsx") 改成你自己的文件名,比如 df = pd.read_excel("我的销售表.xlsx")。
修改列名:把代码中的 "区域"、"销售额"、"产品类别"、"日期" 换成你表格里对应的列标题。比如你的表格列名叫“地区”“金额”“品类”“下单时间”,就在代码里相应替换。
调整业务目标:底部仪表盘的“目标销售额”目前是实际销售额的 1.2 倍,你可以改成固定数值,比如 目标销售额 = 5000000,直接设定一个具体目标。
修改完成后保存,再次运行,生成的就是你自己的数据大屏了。

五、打包成 exe,发给没有 Python 的同事也能用
打包可以让这个工具变成完全独立、双击即可运行的程序,哪怕对方电脑上没装任何编程环境。
第一步:安装打包工具
在命令行执行:
pip install pyinstaller第二步:打包
在存放 数据大屏.py 的文件夹地址栏输入 cmd 回车,输入以下命令:
pyinstaller -F -w 数据大屏.py参数解释:
-F:打包成一个单独的 exe 文件。
-w:隐藏黑窗口(这样双击运行后静默生成大屏,然后自动打开浏览器)。
等待一两分钟后,在自动生成的 dist 文件夹里找到 数据大屏.exe,把它复制到你的 Excel 文件同一个文件夹下,双击就能自动生成大屏并打开浏览器展示。这个 exe 可以无限复制,发给任何同事都能用。

六、常见问题与解决
Q:生成的网页发给别人,对方打开看不到内容?
A:检查一下发送的是 销售大屏.html 这个文件,它内部已经包含了所有数据和图表,不需要任何额外文件,用浏览器打开即可交互查看。
Q:我的 Excel 有多个 Sheet,想指定读取哪个?
A:在 pd.read_excel() 里加上 sheet_name='你的Sheet名',例如:
df = pd.read_excel("销售数据.xlsx", sheet_name="2024汇总")
Q:不想要深色主题,想换回白色?
A:把代码中的 template="plotly_dark" 删除,或者改为 template="plotly_white"。
Q:我想增加更多图表(比如地图、散点图),怎么办?
A:改布局、加 trace 就好。如果你有定制需求,可以在本文下方留言或后台联系我们。

写在最后
今天的工具,让你告别了 Excel 里一遍遍手工调图的噩梦,不用学编程,不用花钱买软件,一个 exe 就能把枯燥的报表变成领导喜欢、同事羡慕的交互式数据大屏。下一次数据更新时,你只需要双击一下鼠标。

商务合作:RYXtest
夜雨聆风