xls-rs 0.1.7

Rust spreadsheet CLI, library, and MCP server for reading, writing, converting, and analyzing XLSX, XLS, CSV, ODS, Parquet, and Avro with pandas-style operations.
Documentation
//! Convert capability (library parity with CLI `convert`)

use crate::capabilities::{Capability, CapabilityMetadata};
use crate::converter::Converter;
use anyhow::{Context, Result};
use serde_json::{json, Value};

pub struct ConvertCapability;

impl Capability for ConvertCapability {
    fn metadata(&self) -> CapabilityMetadata {
        CapabilityMetadata {
            name: "convert".to_string(),
            description: "Convert between supported spreadsheet formats (e.g. csv, xlsx, parquet)"
                .to_string(),
            parameters: json!({
                "type": "object",
                "properties": {
                    "input": { "type": "string", "description": "Input file path" },
                    "output": { "type": "string", "description": "Output file path" },
                    "sheet": { "type": "string", "description": "Optional sheet name for Excel/ODS" }
                },
                "required": ["input", "output"]
            }),
        }
    }

    fn execute(&self, args: Value) -> Result<Value> {
        let input = args["input"].as_str().context("Missing input")?;
        let output = args["output"].as_str().context("Missing output")?;
        let sheet = args["sheet"].as_str();

        let converter = Converter::new();
        converter.convert(input, output, sheet)?;

        Ok(json!({
            "status": "success",
            "message": format!("Converted '{}' to '{}'", input, output)
        }))
    }
}