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)}"} |