{
  "schemaVersion": "1.0",
  "item": {
    "slug": "xlsx-cn",
    "name": "Xlsx Cn",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/guohongbin-git/xlsx-cn",
    "canonicalUrl": "https://clawhub.ai/guohongbin-git/xlsx-cn",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/xlsx-cn",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=xlsx-cn",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "LICENSE.txt",
      "SKILL.md",
      "_meta.json",
      "scripts/office/helpers/__init__.py",
      "scripts/office/helpers/merge_runs.py",
      "scripts/office/helpers/simplify_redlines.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/xlsx-cn"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/xlsx-cn",
    "agentPageUrl": "https://openagent3.xyz/skills/xlsx-cn/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xlsx-cn/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xlsx-cn/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Professional Font",
        "body": "Use a consistent, professional font (e.g., Arial, Times New Roman) for all deliverables unless otherwise instructed by the user"
      },
      {
        "title": "Zero Formula Errors",
        "body": "Every Excel model MUST be delivered with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)"
      },
      {
        "title": "Preserve Existing Templates (when updating templates)",
        "body": "Study and EXACTLY match existing format, style, and conventions when modifying files\nNever impose standardized formatting on files with established patterns\nExisting template conventions ALWAYS override these guidelines"
      },
      {
        "title": "Color Coding Standards",
        "body": "Unless otherwise stated by the user or existing template\n\nIndustry-Standard Color Conventions\n\nBlue text (RGB: 0,0,255): Hardcoded inputs, and numbers users will change for scenarios\nBlack text (RGB: 0,0,0): ALL formulas and calculations\nGreen text (RGB: 0,128,0): Links pulling from other worksheets within same workbook\nRed text (RGB: 255,0,0): External links to other files\nYellow background (RGB: 255,255,0): Key assumptions needing attention or cells that need to be updated"
      },
      {
        "title": "Number Formatting Standards",
        "body": "Required Format Rules\n\nYears: Format as text strings (e.g., \"2024\" not \"2,024\")\nCurrency: Use $#,##0 format; ALWAYS specify units in headers (\"Revenue ($mm)\")\nZeros: Use number formatting to make all zeros \"-\", including percentages (e.g., \"$#,##0;($#,##0);-\")\nPercentages: Default to 0.0% format (one decimal)\nMultiples: Format as 0.0x for valuation multiples (EV/EBITDA, P/E)\nNegative numbers: Use parentheses (123) not minus -123"
      },
      {
        "title": "Formula Construction Rules",
        "body": "Assumptions Placement\n\nPlace ALL assumptions (growth rates, margins, multiples, etc.) in separate assumption cells\nUse cell references instead of hardcoded values in formulas\nExample: Use =B5*(1+$B$6) instead of =B5*1.05\n\nFormula Error Prevention\n\nVerify all cell references are correct\nCheck for off-by-one errors in ranges\nEnsure consistent formulas across all projection periods\nTest with edge cases (zero values, negative numbers)\nVerify no unintended circular references\n\nDocumentation Requirements for Hardcodes\n\nComment or in cells beside (if end of table). Format: \"Source: [System/Document], [Date], [Specific Reference], [URL if applicable]\"\nExamples:\n\n\"Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]\"\n\"Source: Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]\"\n\"Source: Bloomberg Terminal, 8/15/2025, AAPL US Equity\"\n\"Source: FactSet, 8/20/2025, Consensus Estimates Screen\""
      },
      {
        "title": "Overview",
        "body": "A user may ask you to create, edit, or analyze the contents of an .xlsx file. You have different tools and workflows available for different tasks."
      },
      {
        "title": "Important Requirements",
        "body": "LibreOffice Required for Formula Recalculation: You can assume LibreOffice is installed for recalculating formula values using the scripts/recalc.py script. The script automatically configures LibreOffice on first run, including in sandboxed environments where Unix sockets are restricted (handled by scripts/office/soffice.py)"
      },
      {
        "title": "Data analysis with pandas",
        "body": "For data analysis, visualization, and basic operations, use pandas which provides powerful data manipulation capabilities:\n\nimport pandas as pd\n\n# Read Excel\ndf = pd.read_excel('file.xlsx')  # Default: first sheet\nall_sheets = pd.read_excel('file.xlsx', sheet_name=None)  # All sheets as dict\n\n# Analyze\ndf.head()      # Preview data\ndf.info()      # Column info\ndf.describe()  # Statistics\n\n# Write Excel\ndf.to_excel('output.xlsx', index=False)"
      },
      {
        "title": "CRITICAL: Use Formulas, Not Hardcoded Values",
        "body": "Always use Excel formulas instead of calculating values in Python and hardcoding them. This ensures the spreadsheet remains dynamic and updateable."
      },
      {
        "title": "❌ WRONG - Hardcoding Calculated Values",
        "body": "# Bad: Calculating in Python and hardcoding result\ntotal = df['Sales'].sum()\nsheet['B10'] = total  # Hardcodes 5000\n\n# Bad: Computing growth rate in Python\ngrowth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']\nsheet['C5'] = growth  # Hardcodes 0.15\n\n# Bad: Python calculation for average\navg = sum(values) / len(values)\nsheet['D20'] = avg  # Hardcodes 42.5"
      },
      {
        "title": "✅ CORRECT - Using Excel Formulas",
        "body": "# Good: Let Excel calculate the sum\nsheet['B10'] = '=SUM(B2:B9)'\n\n# Good: Growth rate as Excel formula\nsheet['C5'] = '=(C4-C2)/C2'\n\n# Good: Average using Excel function\nsheet['D20'] = '=AVERAGE(D2:D19)'\n\nThis applies to ALL calculations - totals, percentages, ratios, differences, etc. The spreadsheet should be able to recalculate when source data changes."
      },
      {
        "title": "Common Workflow",
        "body": "Choose tool: pandas for data, openpyxl for formulas/formatting\nCreate/Load: Create new workbook or load existing file\nModify: Add/edit data, formulas, and formatting\nSave: Write to file\nRecalculate formulas (MANDATORY IF USING FORMULAS): Use the scripts/recalc.py script\npython scripts/recalc.py output.xlsx\n\n\nVerify and fix any errors:\n\nThe script returns JSON with error details\nIf status is errors_found, check error_summary for specific error types and locations\nFix the identified errors and recalculate again\nCommon errors to fix:\n\n#REF!: Invalid cell references\n#DIV/0!: Division by zero\n#VALUE!: Wrong data type in formula\n#NAME?: Unrecognized formula name"
      },
      {
        "title": "Creating new Excel files",
        "body": "# Using openpyxl for formulas and formatting\nfrom openpyxl import Workbook\nfrom openpyxl.styles import Font, PatternFill, Alignment\n\nwb = Workbook()\nsheet = wb.active\n\n# Add data\nsheet['A1'] = 'Hello'\nsheet['B1'] = 'World'\nsheet.append(['Row', 'of', 'data'])\n\n# Add formula\nsheet['B2'] = '=SUM(A1:A10)'\n\n# Formatting\nsheet['A1'].font = Font(bold=True, color='FF0000')\nsheet['A1'].fill = PatternFill('solid', start_color='FFFF00')\nsheet['A1'].alignment = Alignment(horizontal='center')\n\n# Column width\nsheet.column_dimensions['A'].width = 20\n\nwb.save('output.xlsx')"
      },
      {
        "title": "Editing existing Excel files",
        "body": "# Using openpyxl to preserve formulas and formatting\nfrom openpyxl import load_workbook\n\n# Load existing file\nwb = load_workbook('existing.xlsx')\nsheet = wb.active  # or wb['SheetName'] for specific sheet\n\n# Working with multiple sheets\nfor sheet_name in wb.sheetnames:\n    sheet = wb[sheet_name]\n    print(f\"Sheet: {sheet_name}\")\n\n# Modify cells\nsheet['A1'] = 'New Value'\nsheet.insert_rows(2)  # Insert row at position 2\nsheet.delete_cols(3)  # Delete column 3\n\n# Add new sheet\nnew_sheet = wb.create_sheet('NewSheet')\nnew_sheet['A1'] = 'Data'\n\nwb.save('modified.xlsx')"
      },
      {
        "title": "Recalculating formulas",
        "body": "Excel files created or modified by openpyxl contain formulas as strings but not calculated values. Use the provided scripts/recalc.py script to recalculate formulas:\n\npython scripts/recalc.py <excel_file> [timeout_seconds]\n\nExample:\n\npython scripts/recalc.py output.xlsx 30\n\nThe script:\n\nAutomatically sets up LibreOffice macro on first run\nRecalculates all formulas in all sheets\nScans ALL cells for Excel errors (#REF!, #DIV/0!, etc.)\nReturns JSON with detailed error locations and counts\nWorks on both Linux and macOS"
      },
      {
        "title": "Formula Verification Checklist",
        "body": "Quick checks to ensure formulas work correctly:"
      },
      {
        "title": "Essential Verification",
        "body": "Test 2-3 sample references: Verify they pull correct values before building full model\n Column mapping: Confirm Excel columns match (e.g., column 64 = BL, not BK)\n Row offset: Remember Excel rows are 1-indexed (DataFrame row 5 = Excel row 6)"
      },
      {
        "title": "Common Pitfalls",
        "body": "NaN handling: Check for null values with pd.notna()\n Far-right columns: FY data often in columns 50+\n Multiple matches: Search all occurrences, not just first\n Division by zero: Check denominators before using / in formulas (#DIV/0!)\n Wrong references: Verify all cell references point to intended cells (#REF!)\n Cross-sheet references: Use correct format (Sheet1!A1) for linking sheets"
      },
      {
        "title": "Formula Testing Strategy",
        "body": "Start small: Test formulas on 2-3 cells before applying broadly\n Verify dependencies: Check all cells referenced in formulas exist\n Test edge cases: Include zero, negative, and very large values"
      },
      {
        "title": "Interpreting scripts/recalc.py Output",
        "body": "The script returns JSON with error details:\n\n{\n  \"status\": \"success\",           // or \"errors_found\"\n  \"total_errors\": 0,              // Total error count\n  \"total_formulas\": 42,           // Number of formulas in file\n  \"error_summary\": {              // Only present if errors found\n    \"#REF!\": {\n      \"count\": 2,\n      \"locations\": [\"Sheet1!B5\", \"Sheet1!C10\"]\n    }\n  }\n}"
      },
      {
        "title": "Library Selection",
        "body": "pandas: Best for data analysis, bulk operations, and simple data export\nopenpyxl: Best for complex formatting, formulas, and Excel-specific features"
      },
      {
        "title": "Working with openpyxl",
        "body": "Cell indices are 1-based (row=1, column=1 refers to cell A1)\nUse data_only=True to read calculated values: load_workbook('file.xlsx', data_only=True)\nWarning: If opened with data_only=True and saved, formulas are replaced with values and permanently lost\nFor large files: Use read_only=True for reading or write_only=True for writing\nFormulas are preserved but not evaluated - use scripts/recalc.py to update values"
      },
      {
        "title": "Working with pandas",
        "body": "Specify data types to avoid inference issues: pd.read_excel('file.xlsx', dtype={'id': str})\nFor large files, read specific columns: pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])\nHandle dates properly: pd.read_excel('file.xlsx', parse_dates=['date_column'])"
      },
      {
        "title": "Code Style Guidelines",
        "body": "IMPORTANT: When generating Python code for Excel operations:\n\nWrite minimal, concise Python code without unnecessary comments\nAvoid verbose variable names and redundant operations\nAvoid unnecessary print statements\n\nFor Excel files themselves:\n\nAdd comments to cells with complex formulas or important assumptions\nDocument data sources for hardcoded values\nInclude notes for key calculations and model sections"
      }
    ],
    "body": "Requirements for Outputs\nAll Excel files\nProfessional Font\nUse a consistent, professional font (e.g., Arial, Times New Roman) for all deliverables unless otherwise instructed by the user\nZero Formula Errors\nEvery Excel model MUST be delivered with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)\nPreserve Existing Templates (when updating templates)\nStudy and EXACTLY match existing format, style, and conventions when modifying files\nNever impose standardized formatting on files with established patterns\nExisting template conventions ALWAYS override these guidelines\nFinancial models\nColor Coding Standards\n\nUnless otherwise stated by the user or existing template\n\nIndustry-Standard Color Conventions\nBlue text (RGB: 0,0,255): Hardcoded inputs, and numbers users will change for scenarios\nBlack text (RGB: 0,0,0): ALL formulas and calculations\nGreen text (RGB: 0,128,0): Links pulling from other worksheets within same workbook\nRed text (RGB: 255,0,0): External links to other files\nYellow background (RGB: 255,255,0): Key assumptions needing attention or cells that need to be updated\nNumber Formatting Standards\nRequired Format Rules\nYears: Format as text strings (e.g., \"2024\" not \"2,024\")\nCurrency: Use $#,##0 format; ALWAYS specify units in headers (\"Revenue ($mm)\")\nZeros: Use number formatting to make all zeros \"-\", including percentages (e.g., \"$#,##0;($#,##0);-\")\nPercentages: Default to 0.0% format (one decimal)\nMultiples: Format as 0.0x for valuation multiples (EV/EBITDA, P/E)\nNegative numbers: Use parentheses (123) not minus -123\nFormula Construction Rules\nAssumptions Placement\nPlace ALL assumptions (growth rates, margins, multiples, etc.) in separate assumption cells\nUse cell references instead of hardcoded values in formulas\nExample: Use =B5*(1+$B$6) instead of =B5*1.05\nFormula Error Prevention\nVerify all cell references are correct\nCheck for off-by-one errors in ranges\nEnsure consistent formulas across all projection periods\nTest with edge cases (zero values, negative numbers)\nVerify no unintended circular references\nDocumentation Requirements for Hardcodes\nComment or in cells beside (if end of table). Format: \"Source: [System/Document], [Date], [Specific Reference], [URL if applicable]\"\nExamples:\n\"Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]\"\n\"Source: Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]\"\n\"Source: Bloomberg Terminal, 8/15/2025, AAPL US Equity\"\n\"Source: FactSet, 8/20/2025, Consensus Estimates Screen\"\nXLSX creation, editing, and analysis\nOverview\n\nA user may ask you to create, edit, or analyze the contents of an .xlsx file. You have different tools and workflows available for different tasks.\n\nImportant Requirements\n\nLibreOffice Required for Formula Recalculation: You can assume LibreOffice is installed for recalculating formula values using the scripts/recalc.py script. The script automatically configures LibreOffice on first run, including in sandboxed environments where Unix sockets are restricted (handled by scripts/office/soffice.py)\n\nReading and analyzing data\nData analysis with pandas\n\nFor data analysis, visualization, and basic operations, use pandas which provides powerful data manipulation capabilities:\n\nimport pandas as pd\n\n# Read Excel\ndf = pd.read_excel('file.xlsx')  # Default: first sheet\nall_sheets = pd.read_excel('file.xlsx', sheet_name=None)  # All sheets as dict\n\n# Analyze\ndf.head()      # Preview data\ndf.info()      # Column info\ndf.describe()  # Statistics\n\n# Write Excel\ndf.to_excel('output.xlsx', index=False)\n\nExcel File Workflows\nCRITICAL: Use Formulas, Not Hardcoded Values\n\nAlways use Excel formulas instead of calculating values in Python and hardcoding them. This ensures the spreadsheet remains dynamic and updateable.\n\n❌ WRONG - Hardcoding Calculated Values\n# Bad: Calculating in Python and hardcoding result\ntotal = df['Sales'].sum()\nsheet['B10'] = total  # Hardcodes 5000\n\n# Bad: Computing growth rate in Python\ngrowth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']\nsheet['C5'] = growth  # Hardcodes 0.15\n\n# Bad: Python calculation for average\navg = sum(values) / len(values)\nsheet['D20'] = avg  # Hardcodes 42.5\n\n✅ CORRECT - Using Excel Formulas\n# Good: Let Excel calculate the sum\nsheet['B10'] = '=SUM(B2:B9)'\n\n# Good: Growth rate as Excel formula\nsheet['C5'] = '=(C4-C2)/C2'\n\n# Good: Average using Excel function\nsheet['D20'] = '=AVERAGE(D2:D19)'\n\n\nThis applies to ALL calculations - totals, percentages, ratios, differences, etc. The spreadsheet should be able to recalculate when source data changes.\n\nCommon Workflow\nChoose tool: pandas for data, openpyxl for formulas/formatting\nCreate/Load: Create new workbook or load existing file\nModify: Add/edit data, formulas, and formatting\nSave: Write to file\nRecalculate formulas (MANDATORY IF USING FORMULAS): Use the scripts/recalc.py script\npython scripts/recalc.py output.xlsx\n\nVerify and fix any errors:\nThe script returns JSON with error details\nIf status is errors_found, check error_summary for specific error types and locations\nFix the identified errors and recalculate again\nCommon errors to fix:\n#REF!: Invalid cell references\n#DIV/0!: Division by zero\n#VALUE!: Wrong data type in formula\n#NAME?: Unrecognized formula name\nCreating new Excel files\n# Using openpyxl for formulas and formatting\nfrom openpyxl import Workbook\nfrom openpyxl.styles import Font, PatternFill, Alignment\n\nwb = Workbook()\nsheet = wb.active\n\n# Add data\nsheet['A1'] = 'Hello'\nsheet['B1'] = 'World'\nsheet.append(['Row', 'of', 'data'])\n\n# Add formula\nsheet['B2'] = '=SUM(A1:A10)'\n\n# Formatting\nsheet['A1'].font = Font(bold=True, color='FF0000')\nsheet['A1'].fill = PatternFill('solid', start_color='FFFF00')\nsheet['A1'].alignment = Alignment(horizontal='center')\n\n# Column width\nsheet.column_dimensions['A'].width = 20\n\nwb.save('output.xlsx')\n\nEditing existing Excel files\n# Using openpyxl to preserve formulas and formatting\nfrom openpyxl import load_workbook\n\n# Load existing file\nwb = load_workbook('existing.xlsx')\nsheet = wb.active  # or wb['SheetName'] for specific sheet\n\n# Working with multiple sheets\nfor sheet_name in wb.sheetnames:\n    sheet = wb[sheet_name]\n    print(f\"Sheet: {sheet_name}\")\n\n# Modify cells\nsheet['A1'] = 'New Value'\nsheet.insert_rows(2)  # Insert row at position 2\nsheet.delete_cols(3)  # Delete column 3\n\n# Add new sheet\nnew_sheet = wb.create_sheet('NewSheet')\nnew_sheet['A1'] = 'Data'\n\nwb.save('modified.xlsx')\n\nRecalculating formulas\n\nExcel files created or modified by openpyxl contain formulas as strings but not calculated values. Use the provided scripts/recalc.py script to recalculate formulas:\n\npython scripts/recalc.py <excel_file> [timeout_seconds]\n\n\nExample:\n\npython scripts/recalc.py output.xlsx 30\n\n\nThe script:\n\nAutomatically sets up LibreOffice macro on first run\nRecalculates all formulas in all sheets\nScans ALL cells for Excel errors (#REF!, #DIV/0!, etc.)\nReturns JSON with detailed error locations and counts\nWorks on both Linux and macOS\nFormula Verification Checklist\n\nQuick checks to ensure formulas work correctly:\n\nEssential Verification\n Test 2-3 sample references: Verify they pull correct values before building full model\n Column mapping: Confirm Excel columns match (e.g., column 64 = BL, not BK)\n Row offset: Remember Excel rows are 1-indexed (DataFrame row 5 = Excel row 6)\nCommon Pitfalls\n NaN handling: Check for null values with pd.notna()\n Far-right columns: FY data often in columns 50+\n Multiple matches: Search all occurrences, not just first\n Division by zero: Check denominators before using / in formulas (#DIV/0!)\n Wrong references: Verify all cell references point to intended cells (#REF!)\n Cross-sheet references: Use correct format (Sheet1!A1) for linking sheets\nFormula Testing Strategy\n Start small: Test formulas on 2-3 cells before applying broadly\n Verify dependencies: Check all cells referenced in formulas exist\n Test edge cases: Include zero, negative, and very large values\nInterpreting scripts/recalc.py Output\n\nThe script returns JSON with error details:\n\n{\n  \"status\": \"success\",           // or \"errors_found\"\n  \"total_errors\": 0,              // Total error count\n  \"total_formulas\": 42,           // Number of formulas in file\n  \"error_summary\": {              // Only present if errors found\n    \"#REF!\": {\n      \"count\": 2,\n      \"locations\": [\"Sheet1!B5\", \"Sheet1!C10\"]\n    }\n  }\n}\n\nBest Practices\nLibrary Selection\npandas: Best for data analysis, bulk operations, and simple data export\nopenpyxl: Best for complex formatting, formulas, and Excel-specific features\nWorking with openpyxl\nCell indices are 1-based (row=1, column=1 refers to cell A1)\nUse data_only=True to read calculated values: load_workbook('file.xlsx', data_only=True)\nWarning: If opened with data_only=True and saved, formulas are replaced with values and permanently lost\nFor large files: Use read_only=True for reading or write_only=True for writing\nFormulas are preserved but not evaluated - use scripts/recalc.py to update values\nWorking with pandas\nSpecify data types to avoid inference issues: pd.read_excel('file.xlsx', dtype={'id': str})\nFor large files, read specific columns: pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])\nHandle dates properly: pd.read_excel('file.xlsx', parse_dates=['date_column'])\nCode Style Guidelines\n\nIMPORTANT: When generating Python code for Excel operations:\n\nWrite minimal, concise Python code without unnecessary comments\nAvoid verbose variable names and redundant operations\nAvoid unnecessary print statements\n\nFor Excel files themselves:\n\nAdd comments to cells with complex formulas or important assumptions\nDocument data sources for hardcoded values\nInclude notes for key calculations and model sections"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/guohongbin-git/xlsx-cn",
    "publisherUrl": "https://clawhub.ai/guohongbin-git/xlsx-cn",
    "owner": "guohongbin-git",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/xlsx-cn",
    "downloadUrl": "https://openagent3.xyz/downloads/xlsx-cn",
    "agentUrl": "https://openagent3.xyz/skills/xlsx-cn/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xlsx-cn/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xlsx-cn/agent.md"
  }
}