calc
Spreadsheet creation, format conversion (ODS/XLSX/CSV), formulas, data automation with LibreOffice Calc.
- category
- spreadsheet-processing
- risk
- safe
- source
- personal
- date added
- 2026-02-27
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