{"id":28269,"library":"spreadsheetforms","title":"spreadsheetforms","description":"Tools for creating, extracting submitted data from, and filling spreadsheet-based forms. Current version 0.5.0, requires Python >=3.7. Release cadence is irregular.","status":"active","version":"0.5.0","language":"python","source_language":"en","source_url":"https://github.com/OpenDataServices/spreadsheet-forms","tags":["spreadsheet","forms","data extraction","excel"],"install":[{"cmd":"pip install spreadsheetforms","lang":"bash","label":"Default install via pip"}],"dependencies":[],"imports":[{"note":"Hyphen in PyPI name, but module uses underscore.","wrong":"from spreadsheet_forms import Form","symbol":"Form","correct":"from spreadsheetforms import Form"},{"note":"No common wrong import reported.","symbol":"FormData","correct":"from spreadsheetforms import FormData"},{"note":"Subpackage import; wrong: 'from spreadsheetforms import SheetSpec'.","symbol":"SheetSpec","correct":"from spreadsheetforms.sheets import SheetSpec"}],"quickstart":{"code":"from spreadsheetforms import Form\nfrom spreadsheetforms.sheets import SheetSpec\n\n# Define a simple form\nform = Form(\n    sheets=[\n        SheetSpec(\n            name='Questions',\n            columns=['Question', 'Answer']\n        )\n    ]\n)\n\n# Generate a blank spreadsheet\nform.to_file('my_form.xlsx')","lang":"python","description":"Create a basic form template and write it to an Excel file."},"warnings":[{"fix":"Use 'pip install spreadsheetforms' but 'import spreadsheetforms'.","message":"The package name contains a hyphen (spreadsheetforms) but the module import uses an underscore (spreadsheetforms). PyPI does not enforce naming consistency.","severity":"gotcha","affected_versions":"all"},{"fix":"Call `Form.from_file('submission.xlsx', extract_data=True)` to get form with data.","message":"Version 0.4.0 changed the API for extracting submitted data: `Form.from_file()` now requires `extract_data=True` to parse data; previous versions extracted automatically.","severity":"breaking","affected_versions":">=0.4.0"},{"fix":"Check file existence before calling to_file or ensure you have backups.","message":"Form.to_file() overwrites existing files without warning. No prompt or backup is created.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Change import to 'import spreadsheetforms' (no hyphen).","cause":"Trying to import with hyphen instead of underscore.","error":"ModuleNotFoundError: No module named 'spreadsheet_forms'"},{"fix":"Use `form = Form.from_file('file.xlsx', extract_data=True)`. Data is stored as `form.data` after extraction.","cause":"Attempting to access `form.data` without extracting data during load.","error":"AttributeError: 'Form' object has no attribute 'data'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}