Spaces:
Sleeping
Sleeping
from typing import Optional | |
from google import genai | |
from google.genai import types | |
import pandas as pd | |
import requests | |
import os | |
import io | |
from io import BytesIO | |
def excel_file_reader(file_url: str, analysis_prompt: Optional[str] = None) -> str: | |
""" | |
Loads Excel files and analyzes the content of the file. | |
Args: | |
file_url (str): Url path to an Excel file to load | |
analysis_prompt (Optional[str]): Optional prompt for specific analysis focus | |
Returns: | |
str: Returns the analysis results as a string. | |
""" | |
try: | |
# Initialize Google Gen client | |
print(f"Load excel file from URL {file_url}") | |
gemini_llm = genai.Client(api_key=os.getenv("GOOGLE_API_KEY")) | |
resp = requests.get(file_url) | |
sheets = pd.read_excel(BytesIO(resp.content), sheet_name=None) | |
for _, sheet_data in sheets.items(): | |
csv_buffer = io.StringIO() | |
sheet_data.to_csv(csv_buffer, index=False) | |
csv_bytes = csv_buffer.getvalue().encode('utf-8') | |
text = analysis_prompt or "Provide a detailed description of this CSV file." | |
csv_part = types.Part.from_bytes( | |
data=csv_bytes, | |
mime_type='text/csv' | |
) | |
response = gemini_llm.models.generate_content( | |
model="gemini-2.0-flash", | |
contents=[text, csv_part] | |
) | |
return response.text | |
return "" | |
except Exception as e: | |
return {"error": f"Error analyzing excel file: {str(e)}"} |