{"id":21747,"library":"pyexcel-ods3","title":"pyexcel-ods3","description":"A wrapper library to read, manipulate and write data in ODS (Open Document Spreadsheet) format, version 0.6.1. It is part of the pyexcel ecosystem and requires Python 3.6+. Release cadence is low; last release was in 2020.","status":"active","version":"0.6.1","language":"python","source_language":"en","source_url":"https://github.com/pyexcel/pyexcel-ods3","tags":["ods","spreadsheet","pyexcel","open document"],"install":[{"cmd":"pip install pyexcel-ods3","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core plugin system for reading/writing tabular data","package":"pyexcel-io","optional":false},{"reason":"ODS file handling library","package":"pyexcel-ezodf","optional":false},{"reason":"XML parsing used by ezodf","package":"lxml","optional":false}],"imports":[{"note":"pyexcel-ods3 exposes functions directly, not as a module with a class.","wrong":"import pyexcel_ods3","symbol":"get_data","correct":"from pyexcel_ods3 import get_data"},{"note":"Function is named save_data, not save.","wrong":"from pyexcel_ods3 import save","symbol":"save_data","correct":"from pyexcel_ods3 import save_data"}],"quickstart":{"code":"from pyexcel_ods3 import save_data, get_data\ndata = [[1, 2, 3], ['a', 'b', 'c']]\nsave_data('test.ods', data)\nloaded = get_data('test.ods')\nprint(loaded)","lang":"python","description":"Write and read ODS files with a simple 2D list. Note that keys in the result dict are sheet names."},"warnings":[{"fix":"Run: pip install --upgrade pyexcel-ods3 pyexcel-io pyexcel-ezodf","message":"In v0.6.0, the plugin system was revamped. If you upgraded from <0.6.0, you must reinstall or update pyexcel-io and pyexcel-ezodf.","severity":"breaking","affected_versions":">=0.6.0"},{"fix":"Always iterate over dict values or handle sheet names explicitly: for sheet_name, sheet_data in get_data('file.ods').items(): ...","message":"pyexcel-ods3 uses dicts for sheet data; sheet names are dict keys. If the file has multiple sheets, the dict will have multiple entries. Iterating over dict values yields sheets as 2D lists.","severity":"gotcha","affected_versions":"all"},{"fix":"Use Python 3.6 or newer.","message":"Python 3.5 support was dropped in v0.6.0. pyexcel-ods3 now requires Python >=3.6.","severity":"deprecated","affected_versions":">=0.6.0"}],"env_vars":null,"search_vec":"'0.6.1':20 '2020':40 '3.6':31 'cadenc':33 'data':12 'document':16,45 'ecosystem':27 'format':18 'last':36 'librari':6 'low':35 'manipul':9 'od':14,41 'ods3':3 'open':15,44 'part':23 'pyexcel':2,26,43 'pyexcel-ods3':1 'python':30 'read':8 'releas':32,37 'requir':29 'spreadsheet':17,42 'version':19 'wrapper':5 'write':11","created_at":"2026-04-27T17:01:32.180398+00:00","updated_at":"2026-04-27T17:01:32.180398+00:00","problems":[{"fix":"Install with: pip install pyexcel-ods3. Then import: from pyexcel_ods3 import get_data","cause":"Package not installed or incorrect import name.","error":"ModuleNotFoundError: No module named 'pyexcel_ods3'"},{"fix":"Use: from pyexcel_ods3 import save_data","cause":"Using wrong function name (save instead of save_data).","error":"AttributeError: module 'pyexcel_ods3' has no attribute 'save'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.6.1","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/pyexcel/pyexcel-ods3","docs":null,"changelog":null,"pypi":"https://pypi.org/project/pyexcel-ods3/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["data","serialization"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-06-28","next_check":"2026-07-29","install_tag":null}}