Office Toolkit

👤 axelhu 📦 v1.0.0 ⭐ 4.3 ⬇️ 6.7K 下載
📄 辦公效率 免費

📖 技能介紹


name: office-toolkit description: "處理 Office 文件(Word/Excel/PPT/PDF)的技能。當用戶要求讀取、建立、編輯 Word 文件(.docx)、Excel 表格(.xlsx/.csv)、PPT(.pptx)或 PDF 時使用。基於 python-docx、openpyxl、python-pptx、pypdf 庫。Requires: python-docx, openpyxl, python-pptx, pypdf, pandoc, LibreOffice(驗證用)。" metadata: {"openclaw":{"emoji":"📄","requires":{"anyBins":[]}}}


office-toolkit

處理 Office 文件:Word(.docx)、Excel(.xlsx/.csv)、PPT(.pptx)、PDF。

環境要求

pip install --break-system-packages python-docx openpyxl python-pptx pypdf
sudo apt install libreoffice-writer libreoffice-calc libreoffice-impress pandoc

快速參考

任務 庫/命令
讀 Word python-docxpandoc -t markdown
建立/編輯 Word python-docx
讀 Excel openpyxlpandas
建立/編輯 Excel openpyxl
讀 PPT python-pptx
建立/編輯 PPT python-pptx
讀 PDF pypdfpandoc
PDF 格式驗證 LibreOffice soffice
PDF 轉圖片 pdftoppm (poppler-utils)

Word (.docx)

讀取

from docx import Document
doc = Document('file.docx')
for para in doc.paragraphs:
    print(para.text)

# 帶格式提取
import subprocess
result = subprocess.run(['pandoc', '--track-changes=all', 'file.docx', '-t', 'markdown'], 
    capture_output=True, text=True)
print(result.stdout)

建立

from docx import Document
from docx.shared import Pt, Inches

doc = Document()
# 標題
doc.add_heading('文件標題', 0)

# 段落
p = doc.add_paragraph('正文內容')
p.runs[0].bold = True  # 加粗
p.runs[0].font.size = Pt(12)
p.runs[0].font.name = 'Arial'

# 引用
doc.add_paragraph('引用內容', style='Intense Quote')

# 表格
table = doc.add_table(rows=2, cols=3)
table.style = 'Light Grid Accent 1'
table.rows[0].cells[0].text = '表頭1'
table.rows[0].cells[1].text = '表頭2'

doc.save('output.docx')

編輯現有文件

  1. 解壓 → 修改 XML → 重新打包(推薦用 python-docx 直接修改)
  2. 複雜格式建議用 LibreOffice 開啟編輯

Excel (.xlsx)

讀取

import openpyxl
wb = openpyxl.load_workbook('file.xlsx')
ws = wb.active
for row in ws.iter_rows(values_only=True):
    print(row)

建立/編輯

import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment

wb = openpyxl.Workbook()
ws = wb.active
ws.title = '資料'

# 寫入
ws['A1'] = '姓名'
ws['B1'] = '年齡'
ws['A2'] = '張三'
ws['B2'] = 25

# 格式化
header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
ws['A1'].fill = header_fill
ws['A1'].font = Font(color='FFFFFF', bold=True)
ws['A1'].alignment = Alignment(horizontal='center')

# 儲存
wb.save('output.xlsx')

格式化規則(財務場景)

  • 藍色字型:硬編碼輸入值
  • 黑色字型:公式/計算
  • 綠色字型:同文件內連結
  • 紅色字型:外部連結
  • 黃色背景:需要關注的假設

PowerPoint (.pptx)

讀取

from pptx import Presentation
prs = Presentation('file.pptx')
for slide in prs.slides:
    for shape in slide.shapes:
        if hasattr(shape, 'text'):
            print(shape.text)

發現更多技能外掛,請訪問7w4.net。

建立

from pptx import Presentation
from pptx.util import Inches, Pt

prs = Presentation()
prs.slide_width = Inches(10)
prs.slide_height = Inches(7.5)

# 使用空白布局
slide = prs.slides.add_slide(prs.slide_layouts[6])
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = '演示標題'
subtitle.text = '副標題'

prs.save('output.pptx')

設計原則

  • 顏色方案:選一個大膽的配色,主色佔60-70%,1-2個輔助色,1個尖銳強調色
  • 不要預設藍色:根據主題選配色
  • 深淺對比:標題頁用深色背景,結論頁用淺色背景("三明治"結構)
  • 排版留白:不要堆滿,留呼吸空間

PDF

讀取

from pypdf import PdfReader
reader = PdfReader('file.pdf')
print(f'頁數: {len(reader.pages)}')
for page in reader.pages:
    print(page.extract_text())

合併

from pypdf import PdfWriter, PdfReader
writer = PdfWriter()
for pdf_file in ['doc1.pdf', 'doc2.pdf']:
    reader = PdfReader(pdf_file)
    for page in reader.pages:
        writer.add_page(page)
with open('merged.pdf', 'wb') as f:
    writer.write(f)

分割

reader = PdfReader('input.pdf')
for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f'page_{i+1}.pdf', 'wb') as f:
        writer.write(f)

旋轉

page = reader.pages[0]
page.rotate(90)  # 順時針90度

依賴安裝(當前環境狀態)

依賴 狀態
python-docx ✅ 已安裝
openpyxl ✅ 已安裝
python-pptx ✅ 已安裝
pypdf ✅ 已安裝
pandoc ✅ 已安裝
LibreOffice ✅ 已安裝

Agent Rules

  • 建立檔案前先確保目錄可寫
  • 複雜文件先嚐試 python-docx 等庫,庫無法處理再用 LibreOffice
  • PDF 讀取優先用 pypdf,文字提取效果差時用 pandoc
  • Excel 格式化參照財務規範(藍/黑/綠/紅字型 + 黃色背景)
  • LibreOffice 路徑:sofficelibreoffice(已安裝)
  • 收到檔案路徑時,先檢查檔案是否存在:pathlib.Path(path).exists()

🤖 AI 評測

這個 Skill 質量中等偏上,能處理常見的 Word、Excel、PPT、PDF 文件操作。優點是功能齊全、程式碼示例實用、環境配置清晰;不足是複雜場景覆蓋不足,缺少錯誤處理說明。日常簡單文件處理夠用,但遇到特殊格式或批次操作可能需要補充能力。

📊 多維度評分

適應性4.2
規範性4.1
有效性4.5
可靠性3.9
可信度4.8

📁 包含檔案 (2 個)

📄 SKILL.md 5.4 KB
📄 _meta.json 142 B