Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
from io import BytesIO | |
from helper import get_res_df | |
def to_excel(df): | |
""" | |
Convert a Pandas DataFrame to an Excel file in memory. | |
Parameters: | |
df (DataFrame): The DataFrame to be converted to Excel format. | |
Returns: | |
bytes: The in-memory Excel file data. | |
""" | |
output = BytesIO() | |
# Use the Pandas ExcelWriter to write the DataFrame to an in-memory file | |
with pd.ExcelWriter(output, engine='xlsxwriter') as writer: | |
df.to_excel(writer, index=False) | |
processed_data = output.getvalue() | |
return processed_data | |
def process_files(excel_file, text_file): | |
""" | |
Process the uploaded Excel/CSV and text files and return cleaned dataframes. | |
Parameters: | |
excel_file (UploadedFile): The uploaded Excel or CSV file. | |
text_file (UploadedFile): The uploaded text file. | |
Returns: | |
Tuple[DataFrame, DataFrame]: A tuple containing the cleaned DataFrame from the Excel/CSV file | |
and a DataFrame created from the text file data. | |
""" | |
print(excel_file, text_file) # Debugging information | |
# Read the Excel/CSV file into a DataFrame | |
if excel_file.name.endswith('.csv'): | |
df_excel = pd.read_csv(excel_file) | |
else: | |
df_excel = pd.read_excel(excel_file) | |
# Ensure the 'cfcf' column values are formatted as zero-padded 6-digit strings | |
df_excel['cfcf'] = [str(number).zfill(6) for number in df_excel['cfcf']] | |
# Read and process the text file content into a list of lines | |
lines = text_file.read().decode('utf-8').splitlines() | |
data = [line.strip().split(',') for line in lines] # Split each line by commas | |
# Create a DataFrame from the parsed text file data | |
df = pd.DataFrame(data) | |
return df_excel, df | |
# Streamlit UI section | |
st.title("Fetch Employer") # Application title | |
# File uploader widgets to allow users to upload an Excel/CSV file and a text file | |
uploaded_excel = st.file_uploader("Upload the Master file(.xls or .csv)", type=["csv", "xls", "xlsx"]) | |
uploaded_text = st.file_uploader("Upload your Text file(.txt)", type=["txt"]) | |
# Check if both files are uploaded | |
if uploaded_excel and uploaded_text: | |
st.write("Processing the files...") # Inform the user that the files are being processed | |
master_data, df = process_files(uploaded_excel, uploaded_text) # Process the files | |
st.write("Final Output") # Display the result of file processing | |
res = get_res_df(master_data, df) # Generate the result DataFrame using the helper function | |
st.dataframe(res) # Show the result in a table format on the web app | |
# Convert the result DataFrame to an Excel file for download | |
excel_data = to_excel(res) | |
# Provide a button for the user to download the result as an Excel file | |
st.download_button(label="Download Excel", | |
data=excel_data, | |
file_name='Fetch_Employer_Output.xlsx', | |
mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') | |
# import streamlit as st | |
# import pandas as pd | |
# from io import BytesIO | |
# from helper import get_res_df | |
# def to_excel(df): | |
# output = BytesIO() | |
# with pd.ExcelWriter(output, engine='xlsxwriter') as writer: | |
# df.to_excel(writer, index=False) | |
# processed_data = output.getvalue() | |
# return processed_data | |
# def process_files(excel_file, text_file): | |
# print(excel_file,text_file) | |
# if excel_file.name.endswith('.csv'): | |
# df_excel = pd.read_csv(excel_file) | |
# else: | |
# df_excel = pd.read_excel(excel_file) | |
# df_excel['cfcf']=[str(number).zfill(6) for number in df_excel['cfcf']] | |
# lines = text_file.read().decode('utf-8').splitlines() | |
# data = [line.strip().split(',') for line in lines] | |
# df = pd.DataFrame(data) | |
# return df_excel,df | |
# st.title("Fetch Employer") | |
# uploaded_excel = st.file_uploader("Upload the Master file(.xls or .csv)", type=["csv", "xls", "xlsx"]) | |
# uploaded_text = st.file_uploader("Upload your Text file(.txt)", type=["txt"]) | |
# if uploaded_excel and uploaded_text: | |
# st.write("Processing the files...") | |
# master_data, df = process_files(uploaded_excel, uploaded_text) | |
# st.write("Final Output") | |
# res = get_res_df(master_data,df) | |
# st.dataframe(res) | |
# excel_data = to_excel(res) | |
# st.download_button(label="Download Excel", | |
# data=excel_data, | |
# file_name='Fetch_Employer_Output.xlsx', | |
# mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') | |