{ "info": { "author": "Jason R. Coombs", "author_email": "jaraco@jaraco.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3" ], "description": ".. image:: https://img.shields.io/pypi/v/xlsxcessive.svg\n :target: https://pypi.org/project/xlsxcessive\n\n.. image:: https://img.shields.io/pypi/pyversions/xlsxcessive.svg\n\n.. image:: https://img.shields.io/pypi/dm/xlsxcessive.svg\n\n.. image:: https://img.shields.io/travis/jaraco/xlsxcessive/master.svg\n :target: http://travis-ci.org/jaraco/xlsxcessive\n\nXlsXcessive provides a Python API for writing Excel/OOXML compatible .xlsx\nspreadsheets. It generates the XML so you don't have to and uses the openpack\nlibrary by YouGov to wrap it up into an OOXML compatible ZIP file.\n\nLicense\n=======\n\nLicense is indicated in the project metadata (typically one or more\nof the Trove classifiers). For more details, see `this explanation\n`_.\n\n\nCreating a Workbook\n===================\n\nThe starting point for generating an .xlsx file is a workbook::\n\n from xlsxcessive.xlsx import Workbook\n\n workbook = Workbook()\n\n\nAdding Worksheets\n=================\n\nThe workbook alone isn't very useful. Multiple worksheets can be added to the\nworkbook and contain the cells with data, formulas, etc. Worksheets are created\nfrom the workbook and require a name::\n\n sheet1 = workbook.new_sheet('Sheet 1')\n\n\nWorking With Cells\n==================\n\nOnce you have a worksheet you can add some cells to it.::\n\n sheet1.cell('A1', value='Hello, world')\n sheet1.cell('B1', value=7)\n sheet1.cell('C1', value=3.14)\n sheet1.cell('D1', value=decimal.Decimal(\"19.99\"))\n\nStrings, integers, floats and decimals are supported.\n\nYou can also add cells via row index and column index.::\n\n sheet1.cell(coords=(0, 4), value=\"Added via row/col index\")\n\nThis is useful when iterating over data structures to populate a sheet with\ncells.\n\n\nCalculations With Formulas\n==========================\n\nCells can also contain formulas. Formulas are created with a string representing\nthe formula code. You can optionally supply a precalcuated value and a\n``shared`` boolean flag if you wish to share the formula across a number of\ncells. The first cell to reference a shared formula as its value is the master\ncell for the formula. Other cells may also reference the formula.::\n\n formula = sheet1.formula('B1 + C1', shared=True)\n sheet1.cell('C2', formula) # master\n sheet1.cell('D2', formula) # shared, references the master formula\n\n\nCells With Style\n================\n\nThe library contains basic support for styling cells. The first thing you do is\ncreate a style format. Style formats are shared on a stylesheet on the\nworkbook.::\n\n bigfont = workbook.stylesheet.new_format()\n bigfont.font(size=24, bold=True)\n\nOnce you have a style format you can apply it to cells.::\n\n sheet1.cell('A2', 'HI', format=bigfont)\n\nOther supported style transformations include cell alignment and borders.::\n\n col_header = workbook.stylesheet.new_format()\n col_header.align('center')\n col_header.border(bottom='medium')\n\n\nAdjusting Column Width\n======================\n\nIt is possible to adjust column widths on a sheet. The column width is specified\nby either number or index.::\n\n # these are the same column\n sheet1.col(index=0, width=10)\n sheet1.col(number=1, width=10)\n\nTODO: Referencing columns by letters.\n\n\nMerging Cells\n=============\n\nCells can be merged together. The left-most cell in the merge range should\ncontain the data.::\n\n from xlsxcessive.worksheet import Cell\n a3 = sheet1.cell('A3', 'This is a lot of text to fit in a tiny cell')\n a3.merge(Cell('D3'))\n\n\nSave Your Work\n==============\n\nYou can save the generated OOXML data to a local file or to an output file\nstream.::\n\n # local file\n save(workbook, 'financials.xlsx')\n\n # stream\n save(workbook, 'financials.xlsx', stream=sys.stdout)\n\n\nFuture\n======\n\nThis is certainly a work in progress. The focus is going to be on improving the\nfeatures that can be written out in the .xlsx file. That means more data types,\nstyles, metadata, etc. I also want to improve the validation of data before it\nis written in an incorrect manner and Excel complains about it. I don't think\nthis library will ever be crafted to read .xlsx files. That's a job for another\nlibrary that can hate its life.\n\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jaraco/XlsXcessive", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "XlsXcessive", "package_url": "https://pypi.org/project/XlsXcessive/", "platform": "", "project_url": "https://pypi.org/project/XlsXcessive/", "project_urls": { "Homepage": "https://github.com/jaraco/XlsXcessive" }, "release_url": "https://pypi.org/project/XlsXcessive/0.4.1/", "requires_dist": [ "openpack", "six", "jaraco.packaging (>=3.2); extra == 'docs'", "rst.linker (>=1.9); extra == 'docs'", "sphinx; extra == 'docs'", "pytest (>=2.8); extra == 'testing'", "pytest-sugar; extra == 'testing'" ], "requires_python": ">=2.7", "summary": "A Python library for writing .xlsx files.", "version": "0.4.1" }, "last_serial": 2918329, "releases": { "0.1.1": [], "0.1.2": [], "0.1.3": [], "0.1.4": [], "0.1.5": [], "0.1.6": [ { "comment_text": "", "digests": { "md5": "fd1862fb0492873c12415ed3541dcb17", "sha256": "35b90bdc1b107a0532f785c08b40f284a0b2b51d6fa184bc73470027e20f74fd" }, "downloads": -1, "filename": "XlsXcessive-0.1.6.tar.gz", "has_sig": false, "md5_digest": "fd1862fb0492873c12415ed3541dcb17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28799, "upload_time": "2016-04-28T19:43:32", "url": "https://files.pythonhosted.org/packages/66/eb/f94f0efeacec6d3906a1ae8b5368f5bdf67d7db042c158e62ae6ab355e52/XlsXcessive-0.1.6.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "880dde92e28c26fbc1732b7e0b6166a7", "sha256": "6123ed04de4b51fda496850cf30143ce513d61e8db8342d8e780f47cb4a8e4df" }, "downloads": -1, "filename": "XlsXcessive-0.2.0.tar.gz", "has_sig": false, "md5_digest": "880dde92e28c26fbc1732b7e0b6166a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29664, "upload_time": "2015-11-23T19:24:49", "url": "https://files.pythonhosted.org/packages/74/02/29f8a16592a47c3f51fa1d3292a317a7c20d21686f7394e8ff519fb6e7a4/XlsXcessive-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "973f863e27ff3e8068a2febdabe74d19", "sha256": "5813f3e0ffdd9ecb57d88c625986f2be34652df4fcdea92dd5a39e0af247976b" }, "downloads": -1, "filename": "XlsXcessive-0.3.0.tar.gz", "has_sig": false, "md5_digest": "973f863e27ff3e8068a2febdabe74d19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29758, "upload_time": "2015-11-23T20:29:46", "url": "https://files.pythonhosted.org/packages/92/f8/68c2d5bc0d0121387e33ebc8f7a61c1c66bb4f0e23dde8503ddf4701adf1/XlsXcessive-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "9096d5ed5de397ea53f45b981ef55bd0", "sha256": "df3eac3bedfab32d3dce0d8e2d7a622d41091f0c5c5c10f00e2e45b59f04afe0" }, "downloads": -1, "filename": "XlsXcessive-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9096d5ed5de397ea53f45b981ef55bd0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 15137, "upload_time": "2017-06-01T22:00:11", "url": "https://files.pythonhosted.org/packages/2c/57/141c4d458e4bef7815df94af9c8366a7de091b7e8e34f0770d4b6bf50281/XlsXcessive-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d3248f2d1a1b24b76827a57b5de799b", "sha256": "873486e36d81285374ffa6ffece3fd799391b321e3b437649a599e8f7ca05dfb" }, "downloads": -1, "filename": "XlsXcessive-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6d3248f2d1a1b24b76827a57b5de799b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 33371, "upload_time": "2017-06-01T22:00:12", "url": "https://files.pythonhosted.org/packages/04/07/edd0ff1bd4affe45a179b15c94d89b3b4ba22caccfc8686e61d9dbabb771/XlsXcessive-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "0b49d04376b906bbab4a6d7a333eca51", "sha256": "bd97dc66852e092cb7ae7050014778b43071a19002a74267fe6df2509bcc2215" }, "downloads": -1, "filename": "XlsXcessive-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b49d04376b906bbab4a6d7a333eca51", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 15142, "upload_time": "2017-06-01T22:04:56", "url": "https://files.pythonhosted.org/packages/62/fe/ef85573a45eff8efd015e1fd889723deb701d8626fa9ffbf485efc4dfa16/XlsXcessive-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f060b2acc9ace263ede40e679d69cb51", "sha256": "a8e875254eb9188447a9ebd068543543aeacccfae2327a5834fc30f6b46c260d" }, "downloads": -1, "filename": "XlsXcessive-0.4.1.tar.gz", "has_sig": false, "md5_digest": "f060b2acc9ace263ede40e679d69cb51", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 33396, "upload_time": "2017-06-01T22:04:57", "url": "https://files.pythonhosted.org/packages/53/38/f2bd63bb1947d1303bd05d301706a2acc9ce85b9e06068fdbf8066f2eb65/XlsXcessive-0.4.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0b49d04376b906bbab4a6d7a333eca51", "sha256": "bd97dc66852e092cb7ae7050014778b43071a19002a74267fe6df2509bcc2215" }, "downloads": -1, "filename": "XlsXcessive-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b49d04376b906bbab4a6d7a333eca51", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 15142, "upload_time": "2017-06-01T22:04:56", "url": "https://files.pythonhosted.org/packages/62/fe/ef85573a45eff8efd015e1fd889723deb701d8626fa9ffbf485efc4dfa16/XlsXcessive-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f060b2acc9ace263ede40e679d69cb51", "sha256": "a8e875254eb9188447a9ebd068543543aeacccfae2327a5834fc30f6b46c260d" }, "downloads": -1, "filename": "XlsXcessive-0.4.1.tar.gz", "has_sig": false, "md5_digest": "f060b2acc9ace263ede40e679d69cb51", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 33396, "upload_time": "2017-06-01T22:04:57", "url": "https://files.pythonhosted.org/packages/53/38/f2bd63bb1947d1303bd05d301706a2acc9ce85b9e06068fdbf8066f2eb65/XlsXcessive-0.4.1.tar.gz" } ] }