Skip to main content
Glama
basic.py5.32 kB
"""Excel 基础操作工具.""" from typing import Any, Optional, Union from fastmcp import FastMCP from loguru import logger from office_mcp_server.handlers.excel_handler import ExcelHandler def register_basic_tools(mcp: FastMCP, excel_handler: ExcelHandler) -> None: """注册 Excel 基础操作工具.""" @mcp.tool() def create_excel_workbook(filename: str, sheet_name: Optional[str] = None) -> dict[str, Any]: """创建 Excel 工作簿.""" logger.info(f"MCP工具调用: create_excel_workbook(filename={filename})") return excel_handler.create_workbook(filename, sheet_name) @mcp.tool() def write_excel_cell( filename: str, sheet_name: str, cell: str, value: Union[str, int, float] ) -> dict[str, Any]: """写入 Excel 单元格数据.""" logger.info(f"MCP工具调用: write_excel_cell(filename={filename}, cell={cell})") return excel_handler.write_cell(filename, sheet_name, cell, value) @mcp.tool() def write_excel_range( filename: str, sheet_name: str, start_cell: str, data: list[list[Any]] ) -> dict[str, Any]: """批量写入 Excel 数据.""" logger.info(f"MCP工具调用: write_excel_range(filename={filename})") return excel_handler.write_range(filename, sheet_name, start_cell, data) @mcp.tool() def read_excel_cell(filename: str, sheet_name: str, cell: str) -> dict[str, Any]: """读取 Excel 单元格数据.""" logger.info(f"MCP工具调用: read_excel_cell(filename={filename}, cell={cell})") return excel_handler.read_cell(filename, sheet_name, cell) @mcp.tool() def format_excel_cell( filename: str, sheet_name: str, cell: str, font_name: Optional[str] = None, font_size: Optional[int] = None, bold: bool = False, color: Optional[str] = None, bg_color: Optional[str] = None, number_format: Optional[str] = None, horizontal_alignment: Optional[str] = None, vertical_alignment: Optional[str] = None, wrap_text: bool = False, border_style: Optional[str] = None, border_color: Optional[str] = None, ) -> dict[str, Any]: """格式化 Excel 单元格. Args: filename: 文件名 sheet_name: 工作表名称 cell: 单元格引用 (如 'A1') font_name: 字体名称 (可选) font_size: 字号 (可选) bold: 是否加粗 (默认 False) color: 文字颜色 HEX格式 (如 '#FF0000', 可选) bg_color: 背景颜色 HEX格式 (如 '#FFFF00', 可选) number_format: 数字格式 ('0.00'小数, '#,##0'千分位, '0%'百分比, 'yyyy-mm-dd'日期, '$#,##0.00'货币, '@'文本, 可选) horizontal_alignment: 水平对齐 ('left', 'center', 'right', 'justify', 可选) vertical_alignment: 垂直对齐 ('top', 'center', 'bottom', 可选) wrap_text: 是否自动换行 (默认 False) border_style: 边框样式 ('thin', 'medium', 'thick', 'double', 可选) border_color: 边框颜色 HEX格式 (可选) Returns: dict: 操作结果 """ logger.info(f"MCP工具调用: format_excel_cell(filename={filename}, cell={cell})") return excel_handler.format_cell( filename, sheet_name, cell, font_name, font_size, bold, color, bg_color, number_format, horizontal_alignment, vertical_alignment, wrap_text, border_style, border_color ) @mcp.tool() def create_excel_chart( filename: str, sheet_name: str, chart_type: str, data_range: str, title: str = "", position: str = "E5", x_axis_title: Optional[str] = None, y_axis_title: Optional[str] = None, legend_position: Optional[str] = None, show_data_labels: bool = False, ) -> dict[str, Any]: """创建 Excel 图表. Args: filename: 文件名 sheet_name: 工作表名称 chart_type: 图表类型 ('bar'柱状图, 'line'折线图, 'pie'饼图, 'area'面积图, 'scatter'散点图, 'bubble'气泡图, 'radar'雷达图, 'doughnut'圆环图) data_range: 数据范围 (如 'A1:B10') title: 图表标题 (默认 '') position: 图表位置 (默认 'E5') x_axis_title: X轴标题 (可选) y_axis_title: Y轴标题 (可选) legend_position: 图例位置 ('r'右, 'l'左, 't'上, 'b'下, 可选) show_data_labels: 是否显示数据标签 (默认 False) Returns: dict: 操作结果 """ logger.info(f"MCP工具调用: create_excel_chart(filename={filename})") return excel_handler.create_chart( filename, sheet_name, chart_type, data_range, title, position, x_axis_title, y_axis_title, legend_position, show_data_labels ) @mcp.tool() def get_excel_workbook_info(filename: str) -> dict[str, Any]: """获取 Excel 工作簿信息.""" logger.info(f"MCP工具调用: get_excel_workbook_info(filename={filename})") return excel_handler.get_workbook_info(filename)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/walkingzzzy/office-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server