Model-Trainer / main.py
sachit3071's picture
inital commit
c4478d6
import streamlit as st
import pandas as pd
import io
@st.cache_data(show_spinner=False)
def get_sheet_names(file) -> list[str]:
"""Return the sheet names of an Excel file."""
excel_file = pd.ExcelFile(file)
return excel_file.sheet_names
@st.cache_data(show_spinner=False)
def load_df(file, sheet_name):
"""Read a sheet from an Excel file into a DataFrame and cache the result."""
return pd.read_excel(file, sheet_name=sheet_name)
buffer = io.BytesIO()
def main():
# Create columns
main_col1, main_col2 = st.columns([3, 7])
# File uploader
with main_col1:
uploaded_file = st.file_uploader("Choose an Excel file", type=['xlsx', 'xls'])
if uploaded_file is not None:
# ✅ Only caching serializable sheet names
sheet_names = get_sheet_names(uploaded_file)
selected_sheet = st.selectbox("Select a sheet", options=sheet_names, index=0)
# ✅ Cache the DataFrame (serializable)
df = load_df(uploaded_file, selected_sheet)
st.write(df)
# Display the uploaded file's contents in the second column
with main_col2:
if uploaded_file is not None:
# Configure multiselects based on uploaded DataFrame columns
columns = list(df.columns)
selected_gstin = st.multiselect("GST Identification Number (GSTIN)", columns, default=columns)
if __name__ == "__main__":
st.set_page_config(layout="wide")
main()