Working with ODS in Python
OpenDocument Spreadsheet (ODS) file handling with sheet selection, advanced header processing, and high-performance data operations.
Installation
Section titled “Installation”pip install fairspecGetting Started
Section titled “Getting Started”ODS format is handled by the XLSX plugin, which provides:
load_xlsx_table- Load ODS files into tablessave_xlsx_table- Save tables to ODS filesXlsxPlugin- Plugin for framework integration
For example:
from fairspec import load_xlsx_table, Resource
table = load_xlsx_table(Resource(data="table.ods"))# the column types will be automatically inferredBasic Usage
Section titled “Basic Usage”Loading ODS Files
Section titled “Loading ODS Files”from fairspec import load_xlsx_table, Resourcefrom fairspec_metadata import XlsxFileDialect
# Load a simple ODS filetable = load_xlsx_table(Resource(data="data.ods"))
# Load with custom format (specify sheet)table = load_xlsx_table(Resource( data="data.ods", fileDialect=XlsxFileDialect(format="ods", sheetName="Sheet2"),))
# Load multiple ODS files (concatenated)table = load_xlsx_table(Resource(data=["part1.ods", "part2.ods", "part3.ods"]))Saving ODS Files
Section titled “Saving ODS Files”from fairspec import save_xlsx_tablefrom fairspec_metadata import XlsxFileDialect
# Save with default optionssave_xlsx_table(table, path="output.ods", fileDialect=XlsxFileDialect(format="ods"))
# Save with custom sheet namesave_xlsx_table(table, path="output.ods", fileDialect=XlsxFileDialect( format="ods", sheetName="Data",))Advanced Features
Section titled “Advanced Features”Sheet Selection
Section titled “Sheet Selection”from fairspec import load_xlsx_table, Resourcefrom fairspec_metadata import XlsxFileDialect
# Select by sheet number (1-indexed)table = load_xlsx_table(Resource( data="workbook.ods", fileDialect=XlsxFileDialect(format="ods", sheetNumber=2),))
# Select by sheet nametable = load_xlsx_table(Resource( data="workbook.ods", fileDialect=XlsxFileDialect(format="ods", sheetName="Sales Data"),))Multi-Header Row Processing
Section titled “Multi-Header Row Processing”from fairspec import load_xlsx_table, Resourcefrom fairspec_metadata import XlsxFileDialect
# ODS with multiple header rowstable = load_xlsx_table(Resource( data="multi-header.ods", fileDialect=XlsxFileDialect( format="ods", headerRows=[1, 2], headerJoin="_", ),))# Resulting columns: ["Year_Quarter", "2023_Q1", "2023_Q2", "2024_Q1", "2024_Q2"]Comment Row Handling
Section titled “Comment Row Handling”from fairspec import load_xlsx_table, Resourcefrom fairspec_metadata import XlsxFileDialect
# Skip specific comment rowstable = load_xlsx_table(Resource( data="with-comments.ods", fileDialect=XlsxFileDialect( format="ods", commentRows=[1, 2], headerRows=[3], ),))
# Skip rows with comment prefixtable = load_xlsx_table(Resource( data="data.ods", fileDialect=XlsxFileDialect( format="ods", commentPrefix="#", headerRows=[1], ),))Remote File Loading
Section titled “Remote File Loading”from fairspec import load_xlsx_table, Resource
# Load from URLtable = load_xlsx_table(Resource(data="https://example.com/data.ods"))
# Load multiple remote filestable = load_xlsx_table(Resource(data=[ "https://api.example.com/data-2023.ods", "https://api.example.com/data-2024.ods",]))Column Selection
Section titled “Column Selection”from fairspec import load_xlsx_table, Resourcefrom fairspec_metadata import XlsxFileDialect
# Select specific columnstable = load_xlsx_table(Resource( data="data.ods", fileDialect=XlsxFileDialect(format="ods", columnNames=["name", "age", "city"]),))