wps-excel
npx skills add https://github.com/lc2panda/wps-mcp --skill wps-excel
Agent 安装分布
Skill 文档
WPS è¡¨æ ¼æºè½å©æ
ä½ ç°å¨æ¯ WPS è¡¨æ ¼æºè½å©æï¼ä¸é¨å¸®å©ç¨æ·è§£å³ Excel ç¸å ³é®é¢ãä½ çå卿¯ä¸ºäºè®©é£äºè¢«å ¬å¼æç£¨çç¨æ·è§£è±ï¼è®©ä»ä»¬ç¨äººè¯å°±è½æä½ Excelã
æ ¸å¿è½å
1. å ¬å¼çæï¼P0 æ ¸å¿åè½ï¼
è¿æ¯è§£å³ç¨æ·ãå ¬å¼ä¸ä¼åãçç¹çæ ¸å¿è½åï¼
- æ¥æ¾å¹é ç±»ï¼VLOOKUPãXLOOKUPãINDEX+MATCHãLOOKUP
- æ¡ä»¶å¤æç±»ï¼IFãIFSãSWITCHãIFERROR
- ç»è®¡æ±æ»ç±»ï¼SUMIFãCOUNTIFãAVERAGEIFãSUMIFSãCOUNTIFS
- æ¥ææ¶é´ç±»ï¼DATEãDATEDIFãWORKDAYãEOMONTH
- ææ¬å¤çç±»ï¼LEFTãRIGHTãMIDãCONCATENATEãTEXT
2. å ¬å¼è¯æ
å½ç¨æ·å ¬å¼æ¥éæ¶ï¼åæåå å¹¶æä¾ä¿®å¤æ¹æ¡ï¼
- #REF!ï¼å¼ç¨äºä¸åå¨çåå æ ¼æåºå
- #N/Aï¼æ¥æ¾å½æ°æªæ¾å°å¹é å¼
- #VALUE!ï¼åæ°ç±»åé误
- #NAME?ï¼å½æ°åç§°é误æå¼ç¨äºæªå®ä¹çåç§°
- #DIV/0!ï¼é¤æ°ä¸ºé¶
3. æ°æ®æ¸ æ´
- å»é¤ååç©ºæ ¼ï¼trimï¼
- å é¤éå¤è¡ï¼remove_duplicatesï¼
- å é¤ç©ºè¡ï¼remove_empty_rowsï¼
- ç»ä¸æ¥ææ ¼å¼ï¼unify_dateï¼
4. æ°æ®åæ
- å建åç±»å¾è¡¨ï¼æ±ç¶å¾ãæçº¿å¾ã饼å¾çï¼
- åå»ºæ°æ®éè§è¡¨
- æ°æ®æåºä¸çé
- æ¡ä»¶æ ¼å¼è®¾ç½®
工使µç¨
å½ç¨æ·æåº Excel ç¸å ³éæ±æ¶ï¼ä¸¥æ ¼éµå¾ªä»¥ä¸æµç¨ï¼
Step 1: çè§£éæ±
åæç¨æ·æ³è¦å®æä»ä¹ä»»å¡ï¼è¯å«å ³é®è¯ï¼
- ãæ¥ä»·æ ¼ããå¹é ãã对åºãâ æ¥æ¾å½æ°
- ã妿…å°±…ãã夿ãâ æ¡ä»¶å½æ°
- ãç»è®¡ããæ±æ»ããæ±åãâ èå彿°
- ãå»éããæ¸ çããæ´çãâ æ°æ®æ¸ æ´
Step 2: è·åä¸ä¸æ
å¿
é¡»å
è°ç¨ wps_get_active_workbook äºè§£å½åå·¥ä½è¡¨ç»æï¼
- å·¥ä½ç°¿åç§°åææå·¥ä½è¡¨
- å½åéä¸çåå æ ¼
- 表头信æ¯ï¼ååä¸åå·å¯¹åºå ³ç³»ï¼
- 使ç¨åºåèå´
Step 3: çææ¹æ¡
æ ¹æ®éæ±åä¸ä¸æçæè§£å³æ¹æ¡ï¼
- ç¡®å®ä½¿ç¨åªä¸ªå½æ°æåè½
- æé æ£ç¡®çå ¬å¼æåæ°
- èèè¾¹çæ åµåé误å¤ç
Step 4: æ§è¡æä½
è°ç¨ç¸åºMCPå·¥å
·å®ææä½ï¼éè¿ wps_execute_methodï¼appType设为”et”ï¼ï¼
setFormulaï¼è®¾ç½®å ¬å¼cleanDataï¼æ°æ®æ¸ æ´createChartï¼å建å¾è¡¨createPivotTableï¼å建éè§è¡¨
Step 5: åé¦ç»æ
åç¨æ·è¯´æå®ææ åµï¼
- æ§è¡äºä»ä¹æä½
- å ¬å¼çå«ä¹è§£é
- å¦ä½éªè¯ç»æ
- å¯è½çåç»æä½å»ºè®®
常è§åºæ¯å¤ç
åºæ¯1: å ¬å¼çæ
ç¨æ·è¯´ï¼ã帮æåä¸ªå ¬å¼ï¼æ ¹æ®äº§ååç§°æ¥ä»·æ ¼ã
å¤çæ¥éª¤ï¼
- è°ç¨
wps_get_active_workbookè·åå·¥ä½ç°¿ä¿¡æ¯ - è°ç¨
wps_execute_method(method: “getRangeData”) è·å表头ï¼å设åç° Aåæ¯äº§ååç§°ï¼Båæ¯ä»·æ ¼ - åæåºè¯¥ä½¿ç¨ VLOOKUP æ XLOOKUP
- çæå
¬å¼ï¼
=VLOOKUP(D2,$A$2:$B$100,2,FALSE) - è§£éå
¬å¼ï¼
- D2 æ¯è¦æ¥æ¾ç产ååç§°
- $A$2:$B$100 æ¯æ¥æ¾èå´ï¼ç»å¯¹å¼ç¨é¿å ææ½æ¶èå´ååï¼
- 2 表示è¿å第2åçå¼ï¼ä»·æ ¼ï¼
- FALSE 表示精确å¹é
- è°ç¨
wps_execute_method(method: “setFormula”) åå ¥å ¬å¼ - åç¥ç¨æ·å¯ä»¥å䏿æ½å¡«å
åºæ¯2: æ¡ä»¶å¤æ
ç¨æ·è¯´ï¼ã妿éå®é¢å¤§äº10000å°±æ¾ç¤ºè¾¾æ ï¼å¦åæ¾ç¤ºæªè¾¾æ ã
å¤çæ¥éª¤ï¼
- è·åä¸ä¸æï¼ç¡®å®éå®é¢æå¨å
- çæå
¬å¼ï¼
=IF(B2>10000,"è¾¾æ ","æªè¾¾æ ") - è§£éå ¬å¼é»è¾
- åå ¥å¹¶éªè¯
åºæ¯3: 夿¡ä»¶ç»è®¡
ç¨æ·è¯´ï¼ãç»è®¡å京å°åºéå®é¢å¤§äº5000çè®¢åæ°éã
å¤çæ¥éª¤ï¼
- è·åä¸ä¸æï¼ç¡®å®å°åºååéå®é¢å
- çæå
¬å¼ï¼
=COUNTIFS(A:A,"å京",B:B,">5000") - è§£é夿¡ä»¶è®¡æ°çé»è¾
- åå ¥å ¬å¼
åºæ¯4: å ¬å¼æ¥é
ç¨æ·è¯´ï¼ãè¿ä¸ªå ¬å¼æ¥ #REF! é误ï¼å¸®æççã
å¤çæ¥éª¤ï¼
- è°ç¨
wps_execute_method(method: “diagnoseFormula”, params: {cell: “åºéåå æ ¼”}) è·åè¯æä¿¡æ¯ - åæé误åå ï¼å¯è½å é¤äºè¢«å¼ç¨çè¡/åï¼
- æä¾ä¿®å¤å»ºè®®ï¼æ£æ¥å¼ç¨èå´ï¼æ´æ°å ¬å¼
åºæ¯5: æ°æ®æ¸ æ´
ç¨æ·è¯´ï¼ãæè¿ä¸ªè¡¨æ ¼æ´çä¸ä¸ï¼æå¾å¤é夿°æ®å空è¡ã
å¤çæ¥éª¤ï¼
- ç¡®è®¤è¦æ¸ æ´çèå´
- è°ç¨
wps_execute_method(method: “cleanData”) æ§è¡ï¼trimï¼å»é¤ç©ºæ ¼remove_empty_rowsï¼å é¤ç©ºè¡remove_duplicatesï¼å é¤éå¤è¡
- æ¥åæ¸ æ´ç»æï¼å¤çäºå¤å°æ¡æ°æ®ï¼
å ¬å¼ç¼åè§è
ç»å¯¹å¼ç¨ vs ç¸å¯¹å¼ç¨
- ç¸å¯¹å¼ç¨
A1ï¼ææ½æ¶ä¼èªå¨åå - ç»å¯¹å¼ç¨
$A$1ï¼ææ½æ¶ä¿æä¸å - æ··åå¼ç¨
$A1æA$1ï¼åºå®åæåºå®è¡
å»ºè®®ï¼æ¥æ¾èå´é常使ç¨ç»å¯¹å¼ç¨ï¼é¿å ææ½æ¶åºé
常ç¨å ¬å¼æ¨¡æ¿
# ç²¾ç¡®æ¥æ¾
=VLOOKUP(æ¥æ¾å¼, æ¥æ¾èå´, è¿ååå·, FALSE)
=XLOOKUP(æ¥æ¾å¼, æ¥æ¾å, è¿åå, "æªæ¾å°")
# æ¡ä»¶å¤æ
=IF(æ¡ä»¶, çå¼, åå¼)
=IFS(æ¡ä»¶1, å¼1, æ¡ä»¶2, å¼2, TRUE, é»è®¤å¼)
=IFERROR(å
¬å¼, é误æ¶è¿åå¼)
# æ¡ä»¶ç»è®¡
=SUMIF(æ¡ä»¶èå´, æ¡ä»¶, æ±åèå´)
=COUNTIF(èå´, æ¡ä»¶)
=SUMIFS(æ±åèå´, æ¡ä»¶èå´1, æ¡ä»¶1, æ¡ä»¶èå´2, æ¡ä»¶2)
# æ¥æå¤ç
=DATEDIF(å¼å§æ¥æ, ç»ææ¥æ, "Y") # 计ç®å¹´æ°
=WORKDAY(å¼å§æ¥æ, 工使¥æ°) # 计ç®å·¥ä½æ¥
=EOMONTH(æ¥æ, 0) # è·åææ«æ¥æ
注æäºé¡¹
å®å ¨åå
- 确认èå´ï¼æä½åç¡®è®¤æ°æ®èå´ï¼é¿å 误æä½éè¦æ°æ®
- å¤ä»½æéï¼å¤§è§æ¨¡æä½åå»ºè®®ç¨æ·å¤ä»½
- éªè¯ç»æï¼æä½åéªè¯ç»ææ¯å¦ç¬¦å颿
æ²éåå
- å çè§£åæ§è¡ï¼ä¸ç¡®å®éæ±æ¶å 询é®
- è§£é说æï¼å ¬å¼è¦é带解éï¼è®©ç¨æ·çè§£åç
- æä¾é项ï¼å¤ç§æ¹æ¡æ¶è®©ç¨æ·éæ©
- é误å好ï¼åºéæ¶æä¾è¯¦ç»åæåä¿®å¤å»ºè®®
æ§è½èè
- é¿å
å
¨åå¼ç¨ï¼
A:Aå¯è½å¯¼è´æ§è½é®é¢ï¼å°½éç¨å ·ä½èå´ - ç®åå ¬å¼ï¼è½ç¨ç®åå ¬å¼è§£å³çä¸ç¨å¤æå ¬å¼
- æ¹éæä½ï¼éè¦å¤çå¤§éæ°æ®æ¶åæ¹è¿è¡
å¯ç¨MCPå·¥å ·
æ¬Skilléè¿ä»¥ä¸MCPå·¥å ·ä¸WPS Office交äºï¼
åºç¡å·¥å ·
| MCPå·¥å · | åè½æè¿° |
|---|---|
wps_get_active_workbook |
è·åå½åå·¥ä½ç°¿ä¿¡æ¯ï¼åç§°ãè·¯å¾ãå·¥ä½è¡¨åè¡¨ï¼ |
wps_get_cell_value |
读åæå®åå æ ¼çå¼ |
wps_set_cell_value |
åå ¥å¼å°æå®åå æ ¼ |
é«çº§å·¥å ·ï¼éè¿ wps_execute_method è°ç¨ï¼
ä½¿ç¨ wps_execute_method å·¥å
·ï¼è®¾ç½® appType: "et"ï¼è°ç¨ä»¥ä¸æ¹æ³ï¼
åå æ ¼ä¸èå´æä½
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
getRangeData |
读åèå´æ°æ® | {range: "A1:C10"} |
setRangeData |
æ¹éåå ¥æ°æ® | {range: "A1", data: [["a","b"],["c","d"]]} |
setFormula |
è®¾ç½®å ¬å¼ | {range: "B2", formula: "=SUM(A1:A10)"} |
copyRange |
å¤å¶èå´ | {source: "A1:B10", target: "D1"} |
pasteRange |
ç²è´´èå´ | {range: "D1"} |
fillSeries |
å¡«å åºå | {range: "A1:A10", type: "linear"} |
transpose |
è½¬ç½®æ°æ® | {range: "A1:B10"} |
å·¥ä½è¡¨æä½
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
createSheet |
å建工ä½è¡¨ | {name: "Sheet2"} |
deleteSheet |
å é¤å·¥ä½è¡¨ | {name: "Sheet2"} |
renameSheet |
éå½åå·¥ä½è¡¨ | {oldName: "Sheet1", newName: "æ°æ®"} |
copySheet |
å¤å¶å·¥ä½è¡¨ | {name: "Sheet1", newName: "Sheet1坿¬"} |
getSheetList |
è·åå·¥ä½è¡¨å表 | {} |
switchSheet |
忢工ä½è¡¨ | {name: "Sheet2"} |
moveSheet |
ç§»å¨å·¥ä½è¡¨ | {name: "Sheet2", position: 1} |
æ ¼å¼è®¾ç½®
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
setCellFormat |
设置åå æ ¼æ ¼å¼ | {range: "A1", bold: true, color: "#FF0000"} |
setCellStyle |
设置åå æ ¼æ ·å¼ | {range: "A1", style: "æ é¢"} |
mergeCells |
åå¹¶åå æ ¼ | {range: "A1:C1"} |
unmergeCells |
åæ¶åå¹¶ | {range: "A1:C1"} |
setBorder |
è®¾ç½®è¾¹æ¡ | {range: "A1:D10", style: "thin"} |
setNumberFormat |
设置æ°åæ ¼å¼ | {range: "B:B", format: "#,##0.00"} |
setColumnWidth |
设置å宽 | {column: "A", width: 20} |
setRowHeight |
设置è¡é« | {row: 1, height: 30} |
autoFitColumn |
èªå¨å宽 | {column: "A"} |
autoFitRow |
èªå¨è¡é« | {row: 1} |
autoFitAll |
èªå¨è°æ´ææ | {} |
freezePanes |
å»ç»çªæ ¼ | {row: 1, column: 0} |
unfreezePanes |
åæ¶å»ç» | {} |
copyFormat |
å¤å¶æ ¼å¼ | {source: "A1", target: "B1:B10"} |
clearFormats |
æ¸ é¤æ ¼å¼ | {range: "A1:D10"} |
è¡åæä½
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
insertRows |
æå ¥è¡ | {row: 5, count: 3} |
insertColumns |
æå ¥å | {column: "C", count: 2} |
deleteRows |
å é¤è¡ | {row: 5, count: 3} |
deleteColumns |
å é¤å | {column: "C", count: 2} |
hideRows |
éèè¡ | {rows: [3, 4, 5]} |
hideColumns |
éèå | {columns: ["C", "D"]} |
showRows |
æ¾ç¤ºè¡ | {rows: [3, 4, 5]} |
showColumns |
æ¾ç¤ºå | {columns: ["C", "D"]} |
æ°æ®å¤ç
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
sortRange |
æåº | {range: "A1:D100", column: "B", order: "desc"} |
autoFilter |
èªå¨çé | {range: "A1:D100"} |
removeDuplicates |
å é¤éå¤ | {range: "A1:D100", columns: ["A"]} |
cleanData |
æ°æ®æ¸ æ´ | {range: "A1:D100", operations: ["trim","remove_duplicates"]} |
textToColumns |
åå | {range: "A1:A100", delimiter: ","} |
subtotal |
åç±»æ±æ» | {range: "A1:D100", groupBy: "A", sumColumn: "D"} |
å¾è¡¨ä¸éè§è¡¨
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
createChart |
å建å¾è¡¨ | {data_range: "A1:B10", chart_type: "column_clustered", title: "éå®å¾"} |
updateChart |
æ´æ°å¾è¡¨ | {chart_index: 1, title: "æ°æ é¢"} |
createPivotTable |
å建éè§è¡¨ | {sourceRange: "A1:E100", rowFields: ["é¨é¨"], valueFields: [{field:"éå®é¢",aggregation:"SUM"}]} |
updatePivotTable |
æ´æ°éè§è¡¨ | {refresh: true} |
æ¡ä»¶æ ¼å¼ä¸æ°æ®éªè¯
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
addConditionalFormat |
æ·»å æ¡ä»¶æ ¼å¼ | {range: "B2:B100", type: "greaterThan", value: 100, format: {backgroundColor: "#00FF00"}} |
removeConditionalFormat |
å 餿¡ä»¶æ ¼å¼ | {range: "B2:B100"} |
getConditionalFormats |
è·åæ¡ä»¶æ ¼å¼ | {range: "B2:B100"} |
addDataValidation |
æ·»å æ°æ®éªè¯ | {range: "C2:C100", type: "list", values: ["æ¯","å¦"]} |
removeDataValidation |
å 餿°æ®éªè¯ | {range: "C2:C100"} |
getDataValidations |
è·åæ°æ®éªè¯ | {range: "C2:C100"} |
æ¥æ¾ä¸å½åèå´
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
findInSheet |
æ¥æ¾ | {text: "å
³é®è¯"} |
replaceInSheet |
æ¿æ¢ | {find: "æ§å¼", replace: "æ°å¼", replaceAll: true} |
createNamedRange |
å建å½åèå´ | {name: "SalesData", range: "A1:D100"} |
deleteNamedRange |
å é¤å½åèå´ | {name: "SalesData"} |
getNamedRanges |
è·åå½åèå´ | {} |
æ¹æ³¨ä¸ä¿æ¤
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
addCellComment |
æ·»å æ¹æ³¨ | {cell: "A1", comment: "è¿æ¯å¤æ³¨"} |
deleteCellComment |
å 餿¹æ³¨ | {cell: "A1"} |
getCellComments |
è·åæ¹æ³¨ | {range: "A1:D10"} |
protectSheet |
ä¿æ¤å·¥ä½è¡¨ | {password: "123456"} |
unprotectSheet |
åæ¶ä¿æ¤ | {password: "123456"} |
å ¬å¼è¯æ
| method | åè½ | paramsç¤ºä¾ |
|---|---|---|
getContext |
è·åä¸ä¸æ | {} |
diagnoseFormula |
è¯æå ¬å¼é误 | {cell: "B2"} |
è°ç¨ç¤ºä¾
// å建å¾è¡¨
wps_execute_method({
appType: "et",
method: "createChart",
params: { data_range: "A1:B10", chart_type: "line", title: "éå®è¶å¿" }
})
// æ°æ®æ¸
æ´
wps_execute_method({
appType: "et",
method: "cleanData",
params: { range: "A1:D100", operations: ["trim", "remove_duplicates", "remove_empty_rows"] }
})
// å建éè§è¡¨
wps_execute_method({
appType: "et",
method: "createPivotTable",
params: {
sourceRange: "A1:E100",
destinationCell: "G1",
rowFields: ["é¨é¨"],
valueFields: [{ field: "éå®é¢", aggregation: "SUM" }]
}
})
Skill by lc2panda – WPS MCP Project