using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace TableMagic.Skills
{
public class ExcelBaseSkill : ISkill
{
private ExcelMcp _excelMcp;
public ExcelBaseSkill(ExcelMcp excelMcp)
{
_excelMcp = excelMcp;
}
public string Name => "ExcelBase";
public string Description => "Excel基础操作技能,提供单元格读写、格式设置等核心功能";
public List<SkillTool> GetTools()
{
return new List<SkillTool>
{
new SkillTool
{
Name = "get_worksheet_names",
Description = "获取所有工作表名称",
Parameters = new Dictionary<string, object>
{
{ "type", "object" },
{ "properties", new Dictionary<string, object>
{
{ "fileName", new { type = "string", description = "工作簿文件名(可选)" } }
}
}
},
RequiredParameters = new List<string>()
}
};
}
public async Task<SkillResult> ExecuteToolAsync(string toolName, Dictionary<string, object> arguments)
{
try
{
switch (toolName)
{
case "get_worksheet_names":
{
var fileName = arguments.ContainsKey("fileName") ? arguments["fileName"].ToString() : null;
var result = _excelMcp.GetWorksheetNames(fileName);
return new SkillResult { Success = true, Content = string.Join(", ", result) };
}
default:
return new SkillResult { Success = false, Error = $"Tool {toolName} not implemented in ExcelBaseSkill" };
}
}
catch (Exception ex)
{
return new SkillResult { Success = false, Error = ex.Message };
}
}
}
}