{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# execl" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "\n", "writer = pd.ExcelWriter(\"excel_file_path.xlsx\")\n", "\n", "df = pd.DataFrame(np.random.randn(50, 2), columns=list('ab'))\n", "df.to_excel(writer, sheet_name=\"sheet_name1\", index=False)\n", "df.to_excel(writer, sheet_name=\"sheet_name2\", index=False)\n", "\n", "writer.save()\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method __exit__ in module pandas.io.excel:\n", "\n", "__exit__(exc_type, exc_value, traceback) method of pandas.io.excel._XlsxWriter instance\n", "\n" ] } ], "source": [ "help(writer.__exit__)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on method __enter__ in module pandas.io.excel:\n", "\n", "__enter__() method of pandas.io.excel._XlsxWriter instance\n", " # Allow use as a contextmanager\n", "\n" ] } ], "source": [ "help(writer.__enter__)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# pandas/io/excel.py\n", "@add_metaclass(abc.ABCMeta)\n", "class ExcelWriter(object):\n", " @abc.abstractmethod\n", " def save(self):\n", " pass\n", "\n", " # Allow use as a contextmanager\n", " def __enter__(self):\n", " return self\n", "\n", " def __exit__(self, exc_type, exc_value, traceback):\n", " self.close()\n", " \n", " def close(self):\n", " \"\"\"synonym for save, to make it more file-like\"\"\"\n", " return self.save()\n", "\n", "class _XlsxWriter(ExcelWriter):\n", " def __init__(self, ):\n", " # Use the xlsxwriter module as the Excel writer.\n", " import xlsxwriter\n", " # https://pypi.python.org/pypi/XlsxWriter\n", " # https://github.com/jmcnamara/XlsxWriter\n", "\n", " super(_XlsxWriter, self).__init__\n", " self.book = xlsxwriter.Workbook(path, **engine_kwargs)\n", "\n", " def save(self):\n", " \"\"\"\n", " Save workbook to disk.\n", " \"\"\"\n", " return self.book.close()\n", "\n", "# xlsxwriter/__init__.py\n", "from .workbook import Workbook\n", "\n", "# xlsxwriter/workbook.py\n", "class Workbook(xmlwriter.XMLwriter):\n", " pass\n", "\n", " def __enter__(self):\n", " \"\"\"Return self object to use with \"with\" statement.\"\"\"\n", " return self\n", "\n", " def __exit__(self, type, value, traceback):\n", " \"\"\"Close workbook when exiting \"with\" statement.\"\"\"\n", " self.close()\n", " \n", " def close(self):\n", " \"\"\"\n", " Call finalization code and close file.\n", " Args:\n", " None.\n", " Returns:\n", " Nothing.\n", " \"\"\"\n", " if not self.fileclosed:\n", " self.fileclosed = 1\n", " self._store_workbook()\n", " \n", " def _store_workbook(self):\n", " xlsx_file = ZipFile(self.filename, \"w\", compression=ZIP_DEFLATED,\n", " allowZip64=self.allow_zip64)\n", " xlsx_file.close()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['book',\n", " 'check_extension',\n", " 'close',\n", " 'cur_sheet',\n", " 'curr_sheet',\n", " 'date_format',\n", " 'datetime_format',\n", " 'engine',\n", " 'path',\n", " 'save',\n", " 'sheets',\n", " 'supported_extensions',\n", " 'write_cells']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[a for a in dir(writer) if not a.startswith('_')]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "with pd.ExcelWriter(\"excel_file_path.xlsx\") as witer:\n", " df = pd.DataFrame(np.random.randn(50, 2), columns=list('ab'))\n", " df.to_excel(writer, sheet_name=\"sheet_name1\", index=False)\n", " df.to_excel(writer, sheet_name=\"sheet_name2\", index=False)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" }, "toc": { "toc_cell": false, "toc_number_sections": true, "toc_threshold": 6, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 0 }