展开yqddx
Known constraints Fonts, colors and charts are not supported. Installation You can install it via pip: $ pip install pyexcel-xls or clone it and install it: $ git clone hexcel-xls.git$ cd pyexcel-xls$ python setup.py install Usage As a standalone library Write to an xls file Here’s the sample code to write a dictionary to an xls file: >>> from pyexcel_xls import save_data>>> data = OrderedDict() # from collections import OrderedDict>>> data.update({"Sheet 1": [[1, 2, 3], [4, 5, 6]]})>>> data.update({"Sheet 2": [["row 1", "row 2", "row 3"]]})>>> save_data("your_file.xls", data) Read from an xls file Here’s the sample code: >>> from pyexcel_xls import get_data>>> data = get_data("your_file.xls")>>> import json>>> print(json.dumps(data)){"Sheet 1": [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], "Sheet 2": [["row 1", "row 2", "row 3"]]} Write an xls to memory Here’s the sample code to write a dictionary to an xls file: >>> from pyexcel_xls import save_data>>> data = OrderedDict()>>> data.update({"Sheet 1": [[1, 2, 3], [4, 5, 6]]})>>> data.update({"Sheet 2": [[7, 8, 9], [10, 11, 12]]})>>> io = StringIO()>>> save_data(io, data)>>> # do something with the io>>> # In reality, you might give it to your http response>>> # object for downloading Read from an xls from memory Continue from previous example: >>> # This is just an illustration>>> # In reality, you might deal with xls file upload>>> # where you will read from requests.FILES['YOUR_XL_FILE']>>> data = get_data(io)>>> print(json.dumps(data)){"Sheet 1": [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], "Sheet 2": [[7.0, 8.0, 9.0], [10.0, 11.0, 12.0]]} As a pyexcel plugin Import it in your file to enable this plugin: from pyexcel.ext import xls Please note only pyexcel version 0.0.4+ support this. Reading from an xls file Here is the sample code: >>> import pyexcel as pe>>> from pyexcel.ext import xls>>> sheet = pe.get_book(file_name="your_file.xls")>>> sheetSheet Name: Sheet 1+---+---+---+|62616964757a686964616fe78988e69d8331333365633837 1 | 2 | 3 |+---+---+---+| 4 | 5 | 6 |+---+---+---+Sheet Name: Sheet 2+-------+-------+-------+| row 1 | row 2 | row 3 |+-------+-------+-------+ Writing to an xls file Here is the sample code: >>> sheet.save_as("another_file.xls") Reading from a IO instance You got to wrap the binary content with stream to get xls working: >>> # This is just an illustration>>> # In reality, you might deal with xls file upload>>> # where you will read from requests.FILES['YOUR_XLS_FILE']>>> xlsfile = "another_file.xls">>> with open(xlsfile, "rb") as f:... content = f.read()... r = pe.get_book(file_type="xls", file_content=content)... print(r)...Sheet Name: Sheet 1+---+---+---+| 1 | 2 | 3 |+---+---+---+| 4 | 5 | 6 |+---+---+---+Sheet Name: Sheet 2+-------+-------+-------+| row 1 | row 2 | row 3 |+-------+-------+-------+ Writing to a StringIO instance You need to pass a StringIO instance to Writer: >>> data = [... [1, 2, 3],... [4, 5, 6]... ]>>> io = StringIO()>>> sheet = pe.Sheet(data)>>> sheet.save_to_memory("xls", io)>>> # then do something with io>>> # In reality, you might give it to your http response>>> # object for downloading License New BSD License Known IssuesIf a zero was typed in a DATE formatted field in xls, you will get “01/01/1900”. If a zero was typed in a TIME formatted field in xls, you will get “00:00:00”. Dependencies xlrd xlwt-future pyexcel-io >= 0.0.4