Skip to main content
Glama
hyunjae-labs

xlwings Excel MCP Server

by hyunjae-labs

create_worksheet

Add a new worksheet to an Excel workbook using the xlwings Excel MCP Server. Specify a session ID and sheet name to organize data within workbooks.

Instructions

Create new worksheet in workbook. Args: session_id: Session ID from open_workbook (required) sheet_name: Name of the new worksheet

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
session_idYes
sheet_nameYes

Implementation Reference

  • MCP tool registration and handler for 'create_worksheet'. Validates session, locks it, and calls the xlwings implementation.
    @mcp.tool() def create_worksheet( session_id: str, sheet_name: str ) -> str: """ Create new worksheet in workbook. Args: session_id: Session ID from open_workbook (required) sheet_name: Name of the new worksheet """ try: # Validate session using centralized helper session = get_validated_session(session_id) if isinstance(session, str): # Error message returned return session with session.lock: from xlwings_mcp.xlwings_impl.sheet_xlw import create_worksheet_xlw_with_wb result = create_worksheet_xlw_with_wb(session.workbook, sheet_name) return result.get("message", "Worksheet created successfully") if "error" not in result else f"Error: {result['error']}" except (ValidationError, WorkbookError) as e: return f"Error: {str(e)}" except Exception as e: logger.error(f"Error creating worksheet: {e}") raise
  • Core handler logic: checks if sheet exists, adds new sheet using wb.sheets.add(), saves workbook.
    def create_worksheet_xlw_with_wb(wb, sheet_name: str) -> Dict[str, Any]: """Session-based version using existing workbook object. Args: wb: Workbook object from session sheet_name: 생성할 시트명 Returns: 생성 결과 딕셔너리 """ try: # 시트 이름 중복 체크 existing_sheets = [sheet.name for sheet in wb.sheets] if sheet_name in existing_sheets: return {"error": f"Sheet '{sheet_name}' already exists"} # 새 시트 추가 wb.sheets.add(name=sheet_name) # 파일 저장 wb.save() return {"message": f"Sheet '{sheet_name}' created successfully"} except Exception as e: logger.error(f"xlwings 워크시트 생성 실패: {e}") return {"error": f"Failed to create worksheet: {str(e)}"}
  • Non-session helper: opens workbook from filepath, creates sheet, handles COM, cleanup.
    def create_worksheet_xlw(filepath: str, sheet_name: str) -> Dict[str, Any]: """xlwings를 사용한 워크시트 생성 Args: filepath: Excel 파일 경로 sheet_name: 생성할 시트명 Returns: 생성 결과 딕셔너리 """ app = None wb = None # Initialize COM for thread safety (Windows) _com_initialize() try: # 파일 경로 검증 file_path = Path(filepath) if not file_path.exists(): return {"error": f"File not found: {filepath}"} # Excel 앱 시작 app = xw.App(visible=False, add_book=False) # 워크북 열기 wb = app.books.open(filepath) # 시트 이름 중복 체크 existing_sheets = [sheet.name for sheet in wb.sheets] if sheet_name in existing_sheets: return {"error": f"Sheet '{sheet_name}' already exists"} # 새 시트 추가 wb.sheets.add(name=sheet_name) # 파일 저장 wb.save() return {"message": f"Sheet '{sheet_name}' created successfully"} except Exception as e: logger.error(f"xlwings 워크시트 생성 실패: {e}") return {"error": f"Failed to create worksheet: {str(e)}"} finally: # 리소스 정리 if wb: try: wb.close() except Exception as e: logger.warning(f"워크북 닫기 실패: {e}") if app: try: app.quit() except Exception as e: logger.warning(f"Excel 앱 종료 실패: {e}")

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/hyunjae-labs/xlwings-mcp-server'

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