Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Create, read, edit, and extract content from PDF, DOCX, XLSX, and PPTX documents for professional reports, presentations, and data exports.
Create, read, edit, and extract content from PDF, DOCX, XLSX, and PPTX documents for professional reports, presentations, and data exports.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
Comprehensive skill for creating and manipulating office documents. Handles PDF, DOCX, XLSX, and PPTX formats.
FormatCreateReadEditPDFfpdf, reportlabpdfplumber, pymupdfpypdfDOCXpython-docxpython-docxpython-docxXLSXopenpyxl, pandasopenpyxl, pandasopenpyxlPPTXpython-pptxpython-pptxpython-pptx
pip install fpdf reportlab pdfplumber pymupdf pypdf
from fpdf import FPDF pdf = FPDF() pdf.add_page() pdf.set_font("Helvetica", size=12) pdf.cell(0, 10, "Hello World", ln=True) pdf.output("document.pdf")
from fpdf import FPDF pdf = FPDF() pdf.add_page() pdf.image("photo.jpg", x=10, y=10, w=100) pdf.output("with_image.pdf")
import pdfplumber with pdfplumber.open("document.pdf") as pdf: for page in pdf.pages: print(page.extract_text())
from pypdf import PdfMerger merger = PdfMerger() merger.append("file1.pdf") merger.append("file2.pdf") merger.write("merged.pdf") merger.close()
from pypdf import PdfReader, PdfWriter reader = PdfReader("document.pdf") writer = PdfWriter() for i in range(0, 5): # First 5 pages writer.add_page(reader.pages[i]) with open("split.pdf", "wb") as f: writer.write(f)
pip install python-docx
from docx import Document doc = Document() doc.add_heading("Report Title", level=0) doc.add_paragraph("This is a paragraph.") doc.add_paragraph("Bold text", style="Intense Quote") doc.save("report.docx")
from docx import Document doc = Document() table = doc.add_table(rows=3, cols=2) table.style = "Table Grid" # Header row hdr_cells = table.rows[0].cells hdr_cells[0].text = "Name" hdr_cells[1].text = "Value" # Data rows row = table.rows[1].cells row[0].text = "Revenue" row[1].text = "$1,000,000" doc.save("table.docx")
from docx import Document from docx.shared import Inches doc = Document() doc.add_picture("chart.png", width=Inches(5)) doc.save("with_image.docx")
from docx import Document doc = Document("report.docx") for para in doc.paragraphs: print(para.text) for table in doc.tables: for row in table.rows: for cell in row.cells: print(cell.text)
from docx import Document doc = Document() doc.add_paragraph("Items:", style="List Bullet") doc.add_paragraph("First item", style="List Bullet") doc.add_paragraph("Second item", style="List Bullet") doc.save("bullets.docx")
pip install openpyxl pandas xlsxwriter
from openpyxl import Workbook wb = Workbook() ws = wb.active ws.title = "Sheet1" # Headers ws["A1"] = "Name" ws["B1"] = "Value" # Data ws["A2"] = "Revenue" ws["B2"] = 1000000 # Formula ws["A3"] = "Total" ws["B3"] = "=SUM(B2:B2)" wb.save("data.xlsx")
import pandas as pd df = pd.DataFrame({ "Name": ["Alice", "Bob", "Charlie"], "Score": [85, 92, 78] }) df.to_excel("scores.xlsx", index=False)
from openpyxl import Workbook from openpyxl.chart import BarChart, Reference wb = Workbook() ws = wb.active # Data ws["A1"] = "Month" ws["B1"] = "Sales" data = [("Jan", 100), ("Feb", 150), ("Mar", 200)] for i, (month, sales) in enumerate(data, 2): ws[f"A{i}"] = month ws[f"B{i}"] = sales # Chart chart = BarChart() chart.add_data(Reference(ws, min_col=2, min_row=1, max_row=4)) chart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=4)) chart.title = "Monthly Sales" ws.add_chart(chart, "D1") wb.save("chart.xlsx")
from openpyxl import load_workbook wb = load_workbook("data.xlsx") ws = wb.active for row in ws.iter_rows(values_only=True): print(row)
from openpyxl.styles import Font, PatternFill, Alignment from openpyxl import Workbook wb = Workbook() ws = wb.active # Bold header ws["A1"] = "Header" ws["A1"].font = Font(bold=True, size=14) # Background color ws["A1"].fill = PatternFill(start_color="4472C4", fill_type="solid") ws["A1"].font = Font(color="FFFFFF", bold=True) # Center align ws["A1"].alignment = Alignment(horizontal="center") wb.save("formatted.xlsx")
pip install python-pptx
from pptx import Presentation from pptx.util import Inches, Pt prs = Presentation() # Title slide slide_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(slide_layout) title = slide.shapes.title subtitle = slide.placeholders[1] title.text = "Presentation Title" subtitle.text = "Subtitle here" prs.save("presentation.pptx")
from pptx import Presentation from pptx.util import Inches prs = Presentation() slide_layout = prs.slide_layouts[1] # Title and Content slide = prs.slides.add_slide(slide_layout) title = slide.shapes.title title.text = "Key Points" body = slide.placeholders[1] tf = body.text_frame tf.text = "First point" p = tf.add_paragraph() p.text = "Second point" p.level = 1 # Indent prs.save("bullets.pptx")
from pptx import Presentation from pptx.util import Inches prs = Presentation() slide_layout = prs.slide_layouts[5] # Blank slide = prs.slides.add_slide(slide_layout) slide.shapes.add_picture("chart.png", Inches(1), Inches(1), width=Inches(8)) prs.save("with_image.pptx")
from pptx import Presentation from pptx.util import Inches prs = Presentation() slide_layout = prs.slide_layouts[5] # Blank slide = prs.slides.add_slide(slide_layout) rows, cols = 4, 3 table = slide.shapes.add_table(rows, cols, Inches(1), Inches(1), Inches(8), Inches(3)).table # Set headers table.cell(0, 0).text = "Name" table.cell(0, 1).text = "Q1" table.cell(0, 2).text = "Q2" # Set data table.cell(1, 0).text = "Alice" table.cell(1, 1).text = "100" table.cell(1, 2).text = "150" prs.save("table.pptx")
from docx import Document from docx.shared import Inches doc = Document() doc.add_heading("Monthly Report", level=0) doc.add_paragraph("Generated automatically by agent.") # Add summary table table = doc.add_table(rows=3, cols=2) table.style = "Table Grid" table.rows[0].cells[0].text = "Metric" table.rows[0].cells[1].text = "Value" table.rows[1].cells[0].text = "Revenue" table.rows[1].cells[1].text = "$1,000,000" table.rows[2].cells[0].text = "Users" table.rows[2].cells[1].text = "5,000" doc.save("report.docx")
import pandas as pd from openpyxl.chart import BarChart, Reference from openpyxl import load_workbook # Create data df = pd.DataFrame({ "Date": pd.date_range("2026-01-01", periods=30), "Revenue": [1000 + i * 50 for i in range(30)] }) # Save with formatting df.to_excel("daily_revenue.xlsx", index=False) # Add chart wb = load_workbook("daily_revenue.xlsx") ws = wb.active chart = BarChart() chart.add_data(Reference(ws, min_col=2, min_row=1, max_row=31)) chart.set_categories(Reference(ws, min_col=1, min_row=2, max_row=31)) chart.title = "Daily Revenue" ws.add_chart(chart, "D1") wb.save("daily_revenue.xlsx")
from fpdf import FPDF import matplotlib.pyplot as plt # Create chart image plt.figure(figsize=(10, 6)) plt.bar(["Jan", "Feb", "Mar"], [100, 150, 200]) plt.title("Monthly Sales") plt.savefig("chart.png") plt.close() # Create PDF pdf = FPDF() pdf.add_page() pdf.set_font("Helvetica", size=16) pdf.cell(0, 10, "Monthly Sales Report", ln=True, align="C") pdf.image("chart.png", x=10, y=30, w=190) pdf.output("report.pdf")
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.