LibreOffice Calc
Overview
LibreOffice Calc skill for creating, editing, converting, and automating spreadsheet workflows using the native ODS (OpenDocument Spreadsheet) format.
When to Use This Skill
Use this skill when:
- Creating new spreadsheets in ODS format
- Converting between ODS, XLSX, CSV, PDF formats
- Automating data processing and analysis
- Creating formulas, charts, and pivot tables
- Batch processing spreadsheet operations
Core Capabilities
1. Spreadsheet Creation
- Create new ODS spreadsheets from scratch
- Generate spreadsheets from templates
- Create data entry forms
- Build dashboards and reports
2. Format Conversion
- ODS to other formats: XLSX, CSV, PDF, HTML
- Other formats to ODS: XLSX, XLS, CSV, DBF
- Batch conversion of multiple files
3. Data Automation
- Formula automation and calculations
- Data import from CSV, database, APIs
- Data export to various formats
- Batch data processing
4. Data Analysis
- Pivot tables and data summarization
- Statistical functions and analysis
- Data validation and filtering
- Conditional formatting
5. Integration
- Command-line automation via soffice
- Python scripting with UNO
- Database connectivity
Workflows
Creating a New Spreadsheet
Method 1: Command-Line
soffice --calc template.ods
Method 2: Python with UNO
import uno
def create_spreadsheet():
local_ctx = uno.getComponentContext()
resolver = local_ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", local_ctx
)
ctx = resolver.resolve(
"uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext"
)
smgr = ctx.ServiceManager
doc = smgr.createInstanceWithContext("com.sun.star.sheet.SpreadsheetDocument", ctx)
sheets = doc.getSheets()
sheet = sheets.getByIndex(0)
cell = sheet.getCellByPosition(0, 0)
cell.setString("Hello from LibreOffice Calc!")
doc.storeToURL("file:///path/to/spreadsheet.ods", ())
doc.close(True)
Method 3: Using ezodf
import ezodf
doc = ezodf.newdoc('ods', 'spreadsheet.ods')
sheet = doc.sheets[0]
sheet['A1'].set_value('Hello')
sheet['B1'].set_value('World')
doc.save()
Converting Spreadsheets
# ODS to XLSX
soffice --headless --convert-to xlsx spreadsheet.ods
# ODS to CSV
soffice --headless --convert-to csv spreadsheet.ods
# ODS to PDF
soffice --headless --convert-to pdf spreadsheet.ods
# XLSX to ODS
soffice --headless --convert-to ods spreadsheet.xlsx
# Batch convert
for file in *.ods; do
soffice --headless --convert-to xlsx "$file"
done
Formula Automation
import uno
def create_formula_spreadsheet():
local_ctx = uno.getComponentContext()
resolver = local_ctx.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", local_ctx
)
ctx = resolver.resolve(
"uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext"
)
smgr = ctx.ServiceManager
doc = smgr.createInstanceWithContext("com.sun.star.sheet.SpreadsheetDocument", ctx)
sheet = doc.getSheets().getByIndex(0)
sheet.getCellByPosition(0, 0).setDoubleValue(100)
sheet.getCellByPosition(0, 1).setDoubleValue(200)
cell = sheet.getCellByPosition(0, 2)
cell.setFormula("SUM(A1:A2)")
doc.storeToURL("file:///path/to/formulas.ods", ())
doc.close(True)
Format Conversion Reference
Supported Input Formats
- ODS (native), XLSX, XLS, CSV, DBF, HTML
Supported Output Formats
- ODS, XLSX, XLS, CSV, PDF, HTML
Command-Line Reference
soffice --headless
soffice --headless --convert-to <format> <file>
soffice --calc # Calc
Python Libraries
pip install ezodf # ODS handling
pip install odfpy # ODF manipulation
pip install pandas # Data analysis
Best Practices
- Use named ranges for clarity
- Document complex formulas
- Use data validation for input control
- Create templates for recurring reports
- Store ODS source files in version control
- Test conversions thoroughly
- Use CSV for data exchange
- Handle conversion failures gracefully
Troubleshooting
Cannot open socket
killall soffice.bin
soffice --headless --accept="socket,host=localhost,port=8100;urp;"
Resources
Related Skills
- writer
- impress
- draw
- base
- xlsx-official
- workflow-automation
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
1---2name: libreoffice-calc3description: Spreadsheet creation, format conversion (ODS/XLSX/CSV), formulas, data automation with LibreOffice Calc.4---5# LibreOffice Calc67## Overview89LibreOffice Calc skill for creating, editing, converting, and automating spreadsheet workflows using the native ODS (OpenDocument Spreadsheet) format.1011## When to Use This Skill1213Use this skill when:14- Creating new spreadsheets in ODS format15- Converting between ODS, XLSX, CSV, PDF formats16- Automating data processing and analysis17- Creating formulas, charts, and pivot tables18- Batch processing spreadsheet operations1920## Core Capabilities2122### 1. Spreadsheet Creation23- Create new ODS spreadsheets from scratch24- Generate spreadsheets from templates25- Create data entry forms26- Build dashboards and reports2728### 2. Format Conversion29- ODS to other formats: XLSX, CSV, PDF, HTML30- Other formats to ODS: XLSX, XLS, CSV, DBF31- Batch conversion of multiple files3233### 3. Data Automation34- Formula automation and calculations35- Data import from CSV, database, APIs36- Data export to various formats37- Batch data processing3839### 4. Data Analysis40- Pivot tables and data summarization41- Statistical functions and analysis42- Data validation and filtering43- Conditional formatting4445### 5. Integration46- Command-line automation via soffice47- Python scripting with UNO48- Database connectivity4950## Workflows5152### Creating a New Spreadsheet5354#### Method 1: Command-Line55```bash56soffice --calc template.ods57```5859#### Method 2: Python with UNO60```python61import uno6263def create_spreadsheet():64 local_ctx = uno.getComponentContext()65 resolver = local_ctx.ServiceManager.createInstanceWithContext(66 "com.sun.star.bridge.UnoUrlResolver", local_ctx67 )68 ctx = resolver.resolve(69 "uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext"70 )71 smgr = ctx.ServiceManager72 doc = smgr.createInstanceWithContext("com.sun.star.sheet.SpreadsheetDocument", ctx)73 sheets = doc.getSheets()74 sheet = sheets.getByIndex(0)75 cell = sheet.getCellByPosition(0, 0)76 cell.setString("Hello from LibreOffice Calc!")77 doc.storeToURL("file:///path/to/spreadsheet.ods", ())78 doc.close(True)79```8081#### Method 3: Using ezodf82```python83import ezodf8485doc = ezodf.newdoc('ods', 'spreadsheet.ods')86sheet = doc.sheets[0]87sheet['A1'].set_value('Hello')88sheet['B1'].set_value('World')89doc.save()90```9192### Converting Spreadsheets9394```bash95# ODS to XLSX96soffice --headless --convert-to xlsx spreadsheet.ods9798# ODS to CSV99soffice --headless --convert-to csv spreadsheet.ods100101# ODS to PDF102soffice --headless --convert-to pdf spreadsheet.ods103104# XLSX to ODS105soffice --headless --convert-to ods spreadsheet.xlsx106107# Batch convert108for file in *.ods; do109 soffice --headless --convert-to xlsx "$file"110done111```112113### Formula Automation114```python115import uno116117def create_formula_spreadsheet():118 local_ctx = uno.getComponentContext()119 resolver = local_ctx.ServiceManager.createInstanceWithContext(120 "com.sun.star.bridge.UnoUrlResolver", local_ctx121 )122 ctx = resolver.resolve(123 "uno:socket,host=localhost,port=8100;urp;StarOffice.ComponentContext"124 )125 smgr = ctx.ServiceManager126 doc = smgr.createInstanceWithContext("com.sun.star.sheet.SpreadsheetDocument", ctx)127 sheet = doc.getSheets().getByIndex(0)128 129 sheet.getCellByPosition(0, 0).setDoubleValue(100)130 sheet.getCellByPosition(0, 1).setDoubleValue(200)131 132 cell = sheet.getCellByPosition(0, 2)133 cell.setFormula("SUM(A1:A2)")134 135 doc.storeToURL("file:///path/to/formulas.ods", ())136 doc.close(True)137```138139## Format Conversion Reference140141### Supported Input Formats142- ODS (native), XLSX, XLS, CSV, DBF, HTML143144### Supported Output Formats145- ODS, XLSX, XLS, CSV, PDF, HTML146147## Command-Line Reference148149```bash150soffice --headless151soffice --headless --convert-to <format> <file>152soffice --calc # Calc153```154155## Python Libraries156157```bash158pip install ezodf # ODS handling159pip install odfpy # ODF manipulation160pip install pandas # Data analysis161```162163## Best Practices1641651. Use named ranges for clarity1662. Document complex formulas1673. Use data validation for input control1684. Create templates for recurring reports1695. Store ODS source files in version control1706. Test conversions thoroughly1717. Use CSV for data exchange1728. Handle conversion failures gracefully173174## Troubleshooting175176### Cannot open socket177```bash178killall soffice.bin179soffice --headless --accept="socket,host=localhost,port=8100;urp;"180```181182## Resources183184- [LibreOffice Calc Guide](https://documentation.libreoffice.org/)185- [UNO API Reference](https://api.libreoffice.org/)186- [ezodf Documentation](http://ezodf.rst2.org/)187188## Related Skills189190- writer191- impress192- draw193- base194- xlsx-official195- workflow-automation196197## Limitations198- Use this skill only when the task clearly matches the scope described above.199- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.200- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.