Jedes Unternehmen, für das ich bis heute gearbeitet habe, battle es: die belastbare MS Excel.

Excel wurde erstmals 1985 veröffentlicht und ist bis heute stark geblieben. Es hat den Aufstieg der relationalen Datenbanken, die Entwicklung vieler Programmiersprachen, das Web mit seiner unendlichen Anzahl von On-line -Anwendungen überlebt, und schließlich überlebt es auch die Ära der KI.

Puh!

Haben Sie Zweifel daran, wie belastbar Excel ist? Ich tu nicht.

Ich denke, der Grund dafür ist es Praktikabilität, um ein Dokument schnell zu beginnen und zu manipulieren. Denken Sie über diese Scenario nach: Wir arbeiten in einem Assembly und plötzlich teilt die Führung eine CSV -Datei und fragt nach einer schnellen Berechnung oder einigen wenigen berechneten Zahlen. Jetzt sind die Optionen:

1. Öffnen Sie eine IDE (oder ein Notizbuch) und beginnen Sie mit dem Codieren wie verrückt, um eine einfache Matplotlib -Grafik zu generieren.

2. Open Energy BI, importieren Sie die Daten und erstellen Sie einen Bericht mit dynamischen Grafiken.

3. Öffnen Sie den CSV in Excel, schreiben Sie ein paar Formeln und erstellen Sie eine Grafik.

Ich kann nicht für Sie sprechen, aber oft gehe ich für Possibility 3. vor, vor allem, weil Excel-Dateien mit allem kompatibel sind, leicht gemeinsam nutzbar und anfängerfreundlich sind.

Ich sage all dies als Einführung, um meinen Standpunkt zu verdeutlichen, dass ich nicht glaube, dass Excel -Dateien bald mit der schnellen Entwicklung von KI verschwinden. Viele werden das lieben, viele werden das hassen.

Meine Aktion hier bestand additionally darin, KI zu nutzen, um Excel -Dateien besser dokumentiert zu machen. Eine der Hauptbeschwerden von Datenteams über Excel ist der Mangel an Greatest Practices und Reproduzierbarkeit, da die Namen der Spalten Namen und Datentypen haben können, aber keine Dokumentation.

Ich habe additionally einen KI -Agenten erstellt, der die Excel -Datei liest und diese kleine Dokumentation erstellt hat. So funktioniert es:

  1. Die Excel -Datei wird in CSV konvertiert und in das große Sprachmodell (LLM) eingespeist.
  2. Der AI -Agent generiert das Datenwörterbuch mit Spalteninformationen (variabler Title, Datentyp, Beschreibung).
  3. Das Datenwörterbuch wird als Kommentare zum Header der Excel -Datei hinzugefügt.
  4. Ausgabedatei mit Kommentaren gespeichert.

OK. Praktisch jetzt. Lassen Sie uns das in diesem Tutorial erledigen.

Code

Lass uns codieren! | Bild erzeugt von AI. Meta llama, 2025. Https://meta.ai

Wir werden zunächst eine virtuelle Umgebung einrichten. Erstellen a venv Mit dem Werkzeug Ihrer Wahl wie Poesie, Python Venv, Anaconda oder UV. Ich magazine UV wirklich, da es meiner Meinung nach am schnellsten und einfachsten ist. Wenn Sie UV installiert haben (5)Öffnen Sie ein Terminal und erstellen Sie Ihre venv.

uv init data-docs
cd data-docs
uv venv
uv add streamlit openpyxl pandas agno mcp google-genai

Lassen Sie uns nun die erforderlichen Module importieren. Dieses Projekt wurde mit Python 3.12.1 erstellt, aber ich glaube, Python 3.9 oder höher könnte den Trick bereits tun. Wir werden verwenden:

  • Agno: Für die KI -Agentenverwaltung
  • Openpyxl: Für die Manipulation von Excel -Dateien
  • Straffung: Für die Entrance-Finish-Schnittstelle.
  • Pandas, OS, JSON, Dedent und Google Genai als Assist -Module.
# Imports
import os
import json
import streamlit as st
from textwrap import dedent

from agno.agent import Agent
from agno.fashions.google import Gemini
from agno.instruments.file import FileTools

from openpyxl import load_workbook
from openpyxl.feedback import Remark
import pandas as pd

Großartig. Der nächste Schritt besteht darin, die Funktionen zu erstellen, die wir mit den Excel -Dateien verarbeiten und den AI -Agenten erstellen müssen.

Beachten Sie, dass alle Funktionen detailliert sind Docstrings. Dies ist beabsichtigt, da LLMs Docstrings verwenden, um zu wissen, was eine bestimmte Funktion tut, und zu entscheiden, ob sie sie als Werkzeug verwenden oder nicht.

Wenn Sie additionally Python -Funktionen als Instruments für einen KI -Agenten verwenden, sollten Sie detaillierte Dokals verwenden. Heutzutage mit kostenlosen Kopiloten wie Windsurf (6) Es ist noch einfacher, sie zu erstellen.

Konvertierung der Datei in CSV konvertieren

Diese Funktion wird:

  • Nehmen Sie die Excel -Datei und lesen Sie nur die ersten 10 Zeilen. Dies reicht für uns aus, um an die LLM zu senden. Wenn wir dies tun, verhindern wir auch, dass zu viele Token als Enter gesendet und dieser Agent zu teuer wird.
  • Speichern Sie die Datei als CSV, um sie als Eingabe für den AI -Agenten zu verwenden. Das CSV -Format ist für das Modell leichter, da es sich um eine von Kommas getrennte Texte handelt. Und wir wissen, dass LLMs glänzen, die mit Textual content arbeiten.

Hier ist die Funktion.

def convert_to_csv(file_path:str):
   """
    Use this device to transform the excel file to CSV.

    * file_path: Path to the Excel file to be transformed
    """
   # Load the file  
   df = pd.read_excel(file_path).head(10)

   # Convert to CSV
   st.write("Changing to CSV... :leftwards_arrow_with_hook:")
   return df.to_csv('temp.csv', index=False)

Lass uns weitermachen.

Erstellen des Agenten

Die nächste Funktion erstellt den AI -Agenten. Ich benutze Agno (1), da es sehr vielseitig und einfach zu bedienen ist. Ich habe auch das Modell ausgewählt Gemini 2.0 Flash. Während der Testphase battle dies das bester Modell, das die Datendokumente generierte. Um es zu verwenden, benötigen Sie einen API -Schlüssel von Google. Vergessen Sie nicht, einen hier zu bekommen (7).

Die Funktion:

  • Empfängt die CSV -Ausgabe aus der vorherigen Funktion.
  • Übergeht den AI -Agenten, der das Datenwörterbuch mit Spaltenname, Beschreibung und Datentyp erzeugt.
  • Beachten Sie, dass die description Argument ist die Aufforderung für den Agenten. Machen Sie es detailliert und präzise.
  • Das Datenwörterbuch wird als speichert als JSON Datei mit einem Software aufgerufen FileTools Das kann Dateien lesen und schreiben.
  • Ich habe eingerichtet retries=2 So können wir bei einem ersten Versuch jeden Fehler umgehen.
def create_agent(apy_key):
    agent = Agent(
        mannequin=Gemini(id="gemini-2.0-flash", api_key=apy_key),
        description= dedent("""
                            You're an agent that reads the temp.csv dataset introduced to you and 
                            based mostly on the title and knowledge sort of every column header, decide the next info:
                            - The info varieties of every column
                            - The outline of every column
                            - The primary column numer is 0

                            Utilizing the FileTools supplied, create a knowledge dictionary in JSON format that features the under info:
                            {<ColNumber>: {ColName: <ColName>, DataType: <DataType>, Description: <Description>}}

                            If you're unable to find out the information sort or description of a column, return 'N/A' for that column for the lacking values.
                            
                            """),
        instruments=( FileTools(read_files=True, save_files=True) ),
        retries=2,
        show_tool_calls=True
        )

    return agent

OK. Jetzt brauchen wir eine andere Funktion, um das Datenwörterbuch in der Datei zu speichern.

Hinzufügen von Datenwörterbuch zum Header der Datei

Dies ist die letzte Funktion, die erstellt wurde. Es wird:

  • Holen Sie sich das Datenwörterbuch json Aus dem vorherigen Schritt und der ursprünglichen Excel -Datei.
  • Fügen Sie das Datenwörterbuch als Kommentare zum Header der Datei hinzu.
  • Speichern Sie die Ausgabedatei.
  • Sobald die Datei gespeichert ist, wird eine Obtain -Schaltfläche angezeigt, damit der Benutzer die geänderte Datei abgerufen hat.
def add_comments_to_header(file_path:str, data_dict:dict="data_dict.json"):
    """
    Use this device so as to add the information dictionary {data_dict.json} as feedback to the header of an Excel file and save the output file.

    The perform takes the Excel file path as argument and provides the {data_dict.json} as feedback to every cell
    Begin counting from column 0
    within the first row of the Excel file, utilizing the next format:    
        * Column Quantity: <column_number>
        * Column Title: <column_name>
        * Knowledge Kind: <data_type>
        * Description: <description>

    Parameters
    ----------
    * file_path : str
        The trail to the Excel file to be processed
    * data_dict : dict
        The info dictionary containing the column quantity, column title, knowledge sort, description, and variety of null values

    """
    
    # Load the information dictionary
    data_dict = json.load(open(data_dict))

    # Load the workbook
    wb = load_workbook(file_path)

    # Get the lively worksheet
    ws = wb.lively

    # Iterate over every column within the first row (header)
    for n, col in enumerate(ws.iter_cols(min_row=1, max_row=1)):
        for header_cell in col:
            header_cell.remark = Remark(dedent(f"""
                              ColName: {data_dict(str(n))('ColName')}, 
                              DataType: {data_dict(str(n))('DataType')},
                              Description: {data_dict(str(n))('Description')}
    """),'AI Agent')

    # Save the workbook
    st.write("Saving File... :floppy_disk:")
    wb.save('output.xlsx')

    # Create a obtain button
    with open('output.xlsx', 'rb') as f:
        st.download_button(
            label="Obtain output.xlsx",
            knowledge=f,
            file_name='output.xlsx',
            mime='utility/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        )

OK. Der nächste Schritt besteht darin, all dies auf einem streamlosen Entrance-Finish-Skript zusammenkleben zu können.

Straffes Entrance-Finish

In diesem Schritt hätte ich eine andere Datei für das Entrance-Finish erstellen und die Funktionen dort importieren können. Aber ich habe mich entschlossen, dieselbe Datei zu verwenden, additionally beginnen wir mit dem berühmten:

if __name__ == "__main__":

Zunächst einige Zeilen, um die in der Webanwendung angezeigte Seite und Nachrichten zu konfigurieren. Wir werden den Inhalt verwenden centered Auf der Seite, und es gibt einige Informationen darüber, wie die App funktioniert.

# Config web page Streamlit
    st.set_page_config(structure="centered", 
                       page_title="Knowledge Docs", 
                       page_icon=":paperclip:",
                       initial_sidebar_state="expanded")
    
    # Title
    st.title("Knowledge Docs :paperclip:")
    st.subheader("Generate a knowledge dictionary on your Excel file.")
    st.caption("1. Enter your Gemini API key and the trail of the Excel file on the sidebar.")
    st.caption("2. Run the agent.")
    st.caption("3. The agent will generate a knowledge dictionary and add it as feedback to the header of the Excel file.")
    st.caption("ColName: <ColName> | DataType: <DataType> | Description: <Description>")
    
    st.divider()

Als nächstes richten wir die Seitenleiste ein, in der der Benutzer seine API -Style von Google eingeben kann und a .xlsx Datei zu ändern.

Es gibt eine Schaltfläche, um die Anwendung auszuführen, eine andere zum Zurücksetzen des App -Standing und eine Fortschrittsleiste. Nichts Besonderes.

with st.sidebar:
        # Enter your API key
        st.caption("Enter your API key and the trail of the Excel file.")
        api_key = st.text_input("API key: ", placeholder="Google Gemini API key", sort="password")
        
        # Add file
        input_file = st.file_uploader("File add", 
                                       sort='xlsx')
        

        # Run the agent
        agent_run = st.button("Run")

        # progress bar
        progress_bar = st.empty()
        progress_bar.progress(0, textual content="Initializing...")

        st.divider()

        # Reset session state
        if st.button("Reset Session"):
            st.session_state.clear()
            st.rerun()

Einmal der laufen Die Schaltfläche wird geklickt. Sie löst den Relaxation des Codes aus, um den Agenten auszuführen. Hier ist die Abfolge der ausführten Schritte:

  1. Die erste Funktion wird aufgerufen, um die Datei in CSV zu transformieren
  2. Der Fortschritt ist in der Fortschrittsleiste registriert.
  3. Der Agent wird erstellt.
  4. Fortschrittsbalken aktualisiert.
  5. Eine Eingabeaufforderung wird in den Agenten eingereicht, um die zu lesen temp.csv Datei, erstellen Sie das Datenwörterbuch und speichern Sie die Ausgabe auf data_dictionary.json.
  6. Das Datenwörterbuch wird auf dem Bildschirm gedruckt, sodass der Benutzer sehen kann, was generiert wurde, während es in der Excel -Datei gespeichert wird.
  7. Die Excel -Datei wird geändert und gespeichert.
# Create the agent
    if agent_run:
        # Convert Excel file to CSV
        convert_to_csv(input_file)

        # Register progress
        progress_bar.progress(15, textual content="Processing CSV...")

        # Create the agent
        agent = create_agent(api_key)

        # Begin the script
        st.write("Working Agent... :runner:")

        # Register progress
        progress_bar.progress(50, textual content="AI Agent is working...")

        # Run the agent    
        agent.print_response(dedent(f"""
                                1. Use FileTools to learn the temp.csv as enter to create the information dictionary for the columns within the dataset. 
                                2. Utilizing the FileTools device, save the information dictionary to a file named 'data_dict.json'.
                                
                                """),
                        markdown=True)

        # Print the information dictionary
        st.write("Producing Knowledge Dictionary... :page_facing_up:")
        with open('data_dict.json', 'r') as f:
            data_dict = json.load(f)
            st.json(data_dict, expanded=False)

        # Add feedback to header
        add_comments_to_header(input_file, 'data_dict.json')

        # Take away momentary recordsdata
        st.write("Eradicating momentary recordsdata... :wastebasket:")
        os.take away('temp.csv')
        os.take away('data_dict.json')    
    
    # If file exists, present success message
    if os.path.exists('output.xlsx'):
        st.success("Accomplished! :white_check_mark:")
        os.take away('output.xlsx')

    # Progress bar finish
    progress_bar.progress(100, textual content="Accomplished!")

Das battle’s. Hier ist eine Demonstration des Agenten in Aktion.

Datendokumente, die Ihrer Excel -Datei hinzugefügt wurden. Bild des Autors.

Schönes Ergebnis!

Versuchen Sie es

Sie können die bereitgestellte App hier ausprobieren: https://excel-datadocs.streamlit.app/

Bevor du gehst

Meiner bescheidenen Meinung nach verschwinden Excel -Dateien nicht so schnell. Wenn wir sie lieben oder hassen, müssen wir uns eine Weile bei ihnen halten.

Excel -Dateien sind vielseitig, einfach zu handhaben und zu teilen, daher sind sie immer noch sehr nützlich für die Routine advert hoc Aufgaben bei der Arbeit.

Jetzt können wir AI jedoch nutzen, um uns zu helfen, diese Dateien zu verarbeiten und sie besser zu machen. Künstliche Intelligenz Berührt so viele Punkte unseres Lebens. Die Routine und die Werkzeuge bei der Arbeit sind nur ein weiterer.

Nutzen wir die KI und arbeiten Sie jeden Tag clever!

Wenn Ihnen dieser Inhalt gefallen hat, finden Sie mehr von meiner Arbeit in meiner Web site und in meiner GitHub, die unten geteilt werden.

Github -Repository

Hier ist das Github -Repository für dieses Projekt.

https://github.com/gurezende/data-dictionary-genai

Finde mich

Sie können mehr über meine Arbeit auf meiner Web site finden.

https://gustavorantos.me

Referenzen

(1. Agno -Dokumente) https://docs.agno.com/inTroduction/brokers

(2. Openpyxl Dokumente) https://openpyxl.readthedocs.io/en/steady/index.html

(3. streamlit -docs) https://docs.streamlit.io/

(4. Datendocs Internet App) https://excel-datadocs.streamlit.app/

(5. UV installieren) https://docs.astral.sh/uv/getting-started/set up/

(6. Windsurf -Codierung Copilot) https://windsurf.com/vscode_tutorial

(7. Google Gemini API -Schlüssel) https://ai.google.dev/gemini-api/docs/api-key

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert