简介
对于经常要处理表格数据的开发者而言,Tablib一定会是你的福音。
Tablib是a format-agnostic tabular dataset library,由于翻译很拗口,简单来说,Tablib可以在内存中处理表格数据,然后导出成各式各样的文件格式。
支持导出的文件格式包括:
- Excel (Sets + Books)
 
- JSON (Sets + Books)
 
- YAML (Sets + Books)
 
- Pandas DataFrames (Sets)
 
- HTML (Sets)
 
- TSV (Sets)【Tab-separated values】
 
- ODS (Sets)【ODS is a spreadsheet file format used by OpenOffice/StarOffice】
 
- CSV (Sets)
 
- DBF (Sets)【.dbf后缀的文件是dBase database file】
 
安装
pip install tablib[pandas]
示例
Tablie有两种数据类型: tablib.Dataset() 和 tablib.Databook()。
Dataset可以理解为table表,表头可以省略。
Databook可以理解为一系列的Dataset,类比为一个Excel文件可以包含多个Sheets。
代码示例
headers = ('first_name', 'last_name')
  data = [     ('John', 'Adams'),     ('George', 'Washington') ]
  data = tablib.Dataset(*data, headers=headers) data.append(('Henry', 'Ford'))   data.append_col((90, 67, 83), header='age')  
  print(data[:2])
 
  print(data['first_name'])
 
  del data[1]  
  | 
 
导出JSON
>>> print(data.export('json')) [   {     "last_name": "Adams",     "age": 90,     "first_name": "John"   },   {     "last_name": "Ford",     "age": 83,     "first_name": "Henry"   } ]
  | 
 
导出YAML
>>> print(data.export('yaml')) - {age: 90, first_name: John, last_name: Adams} - {age: 83, first_name: Henry, last_name: Ford}
  | 
 
导出CSV
>>> print(data.export('csv')) first_name,last_name,age John,Adams,90 Henry,Ford,83
  | 
 
导出Excel
支持XLS和XLSX格式。
>>> with open('people.xls', 'wb') as f: ...     f.write(data.export('xls'))
  | 
 
>>> with open('people.xlsx', 'wb') as f: ...     f.write(data.export('xlsx'))
  | 
 
如果导出xlsx格式时发生诸如TypeError: cell() missing 1 required positional argument: 'column'的错误,可参考issue#324 和stackoverflow上的回答。
导出DBF
>>> with open('people.dbf', 'wb') as f: ...     f.write(data.export('dbf'))
  | 
 
导出Pandas DataFrames
>>> print(data.export('df'))       first_name last_name  age 0       John     Adams   90 1      Henry      Ford   83
  | 
 
导出ODS
>>> with open('people.ods', 'wb') as f: ...     f.write(data.export('ods'))
  | 
 
More
文档与更多示例参考: