Untitled

 avatar
unknown
plain_text
a year ago
3.0 kB
6
Indexable
import pandas as pd
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox

def process_excel():
    # Prompt user to select input Excel file
    input_file_path = filedialog.askopenfilename(title="Select Input Excel File", filetypes=[("Excel Files", "*.xlsx")])
    if not input_file_path:
        return

    try:
        # Read input from Excel file
        input_df = pd.read_excel(input_file_path)

        # Strip whitespace from columns
        input_df['Requirement(s)'] = input_df['Requirement(s)'].str.strip()
        input_df['Specification(s)'] = input_df['Specification(s)'].str.strip()
        input_df['Software Features'] = input_df['Software Features'].str.strip()

        # Fill NaN values in 'Specification(s)' column with an empty string
        input_df['Specification(s)'].fillna("", inplace=True)

        # Group by Requirement(s) and Specification(s) and aggregate Software Features
        output_df = input_df.groupby(['Requirement(s)', 'Specification(s)'])['Software Features'].apply(lambda x: ', '.join(x)).reset_index()

        # Create Tkinter window for displaying output
        output_window = tk.Toplevel(root)
        output_window.title("Processed Data")

        # Create output Text widget
        output_text = tk.Text(output_window, height=20, width=80)
        output_text.pack()

        # Display the output in the Text widget
        output_text.insert(tk.END, "| Requirement(s) | Specification(s) | Software Features |\n")
        output_text.insert(tk.END, "|----------------|-------------------|-------------------|\n")
        for index, row in output_df.iterrows():
            requirement = row['Requirement(s)']
            specification = row['Specification(s)']
            features = row['Software Features']
            if specification == "":
                output_text.insert(tk.END, f"| {requirement} |  | {features} |\n")
            else:
                output_text.insert(tk.END, f"| {requirement} | {specification} | {features} |\n")

        # Save the output to an Excel file
        def save_output():
            output_file_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel Files", "*.xlsx")])
            if output_file_path:
                output_df.to_excel(output_file_path, index=False)
                messagebox.showinfo("Info", "Output saved successfully!")

        # Add Save button to save the output to an Excel file
        save_button = tk.Button(output_window, text="Save Output", command=save_output)
        save_button.pack()

    except Exception as e:
        messagebox.showerror("Error", str(e))

# Create Tkinter window
root = tk.Tk()
root.title("Excel Processor")

# Add Process button to start processing the Excel file
process_button = tk.Button(root, text="Process Excel", command=process_excel)
process_button.pack()

# Run the Tkinter event loop
root.mainloop()
Editor is loading...
Leave a Comment