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

如何在Streamlit中完整展示Excel文件?为何显示效果与原文件不同?

Streamlit展示Excel数据与原文件差异的解决方法

以下是常见导致展示差异的原因及对应解决方案:

  • 数据格式不匹配
    Excel中的日期、货币、百分比等格式,在pandas读取时可能被自动转换为默认数据类型,导致Streamlit展示样式和原文件不一致。
    解决办法:

    • 读取Excel时指定列的数据类型,避免自动转换:
      df = pd.read_excel("contoh.xlsx", dtype={"编号列": str, "百分比列": float})
      
    • 利用pandas的Styler自定义展示格式:
      styled_df = df.style.format({
          "日期列": "{:%Y年%m月%d日}",
          "金额列": "¥{:,.2f}",
          "占比列": "{:.2%}"
      })
      st.dataframe(styled_df)
      
  • 列宽、行高差异
    Streamlit的st.dataframe默认自动调整列宽,和Excel手动设置的布局不同,会导致视觉效果不一致。
    解决办法:通过column_config自定义列宽,height设置表格高度:

    st.dataframe(
        df,
        column_config={
            "长文本列": st.column_config.TextColumn(width="large"),
            "短内容列": st.column_config.TextColumn(width="small")
        },
        height=700  # 设置表格高度,适配更多行
    )
    
  • 合并单元格丢失
    Excel中的合并单元格在pandas读取后,仅保留左上角单元格的值,其余合并位置为NaN,Streamlit原生表格不支持合并单元格展示。
    解决办法:使用第三方组件streamlit-aggrid实现合并单元格效果:

    from st_aggrid import AgGrid
    import pandas as pd
    import streamlit as st
    
    df = pd.read_excel("contoh.xlsx")
    AgGrid(df, enable_enterprise_modules=True)
    
  • 隐藏行列展示差异
    Excel中可能存在隐藏的行或列,pandas默认会读取所有行列,导致Streamlit展示内容比原文件多。
    解决办法:读取时指定要加载的列,或过滤空行:

    # 指定读取的列
    df = pd.read_excel("contoh.xlsx", usecols=["产品名称", "销量", "金额"])
    # 过滤全空的行
    df = df.dropna(how="all")
    

另外,你的代码中遗漏了streamlit的导入,需要在开头添加:

import streamlit as st

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:09:15