Source code for pyexcel_io

"""
    pyexcel_io
    ~~~~~~~~~~~~~~~~~~~

    Uniform interface for reading/writing different excel file formats

    :copyright: (c) 2014-2016 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
"""
import pyexcel_io.csvbook
import pyexcel_io.csvzipbook
import pyexcel_io.sqlbook
import pyexcel_io.djangobook
from .base import ReaderFactory, WriterFactory
from .io import load_data_new, get_writer_new
from .base import SheetReader, SheetWriter, get_io

from ._compact import isstream, is_generator, PY2
from .constants import (
    FILE_FORMAT_CSV,
    DEFAULT_SHEET_NAME
)


[docs]def get_data(afile, file_type=None, streaming=False, **keywords): """Get data from an excel file source :param filename: actual file name, a file stream or actual content :param sheet_name: the name of the sheet to be loaded :param sheet_index: the index of the sheet to be loaded :param file_type: used only when filename is not a physial file name :param keywords: any other parameters :returns: an array if it is a single sheet, an ordered dictionary otherwise """ if isstream(afile) and file_type is None: file_type = FILE_FORMAT_CSV if isstream(afile): data = load_data_new(file_stream=afile, file_type=file_type, **keywords) else: if afile is not None and file_type is not None: data = load_data_new(file_content=afile, file_type=file_type, **keywords) else: data = load_data_new(file_name=afile, file_type=file_type, **keywords) if streaming is False: for key in data.keys(): data[key] = list(data[key]) return data
[docs]def save_data(afile, data, file_type=None, **keywords): """Save data to an excel file source Your data can be an array or an ordered dictionary :param filename: actual file name, a file stream or actual content :param data: the data to be saved :param file_type: used only when filename is not a physial file name :param keywords: any other parameters that python csv module's `fmtparams <https://docs.python.org/release/3.1.5/ library/csv.html#dialects-and-formatting-parameters>`_ """ to_store = data if isinstance(data, list) or is_generator(data): single_sheet_in_book = True to_store = {DEFAULT_SHEET_NAME: data} else: if PY2: keys = data.keys() else: keys = list(data.keys()) if len(keys) == 1: single_sheet_in_book = True else: single_sheet_in_book = False if isstream(afile) and file_type is None: file_type = FILE_FORMAT_CSV store_data(afile, to_store, file_type=file_type, single_sheet_in_book=single_sheet_in_book, **keywords)
def store_data(afile, data, file_type=None, **keywords): """Non public function to store data to afile :param filename: actual file name, a file stream or actual content :param data: the data to be written :param file_type: used only when filename is not a physial file name :param keywords: any other parameters """ if isstream(afile): writer = get_writer_new( file_stream=afile, file_type=file_type, **keywords) else: writer = get_writer_new( file_name=afile, file_type=file_type, **keywords) writer.write(data) writer.close() try: import pyexcel_xls pyexcel_xls.extend_pyexcel(ReaderFactory, WriterFactory) except Exception as e: print(e) pass try: import pyexcel_xlsx pyexcel_xlsx.extend_pyexcel(ReaderFactory, WriterFactory) except: pass try: import pyexcel_ods3 pyexcel_ods3.extend_pyexcel(ReaderFactory, WriterFactory) except: pass