在我的Django(2.0.1)项目中,我想阅读电子表格(excel,csv,ods)并将其转换为python字典进行处理。
我正在调查django-excel,但它不支持Django 2.因此,我计划使用Pandas。我想知道在这种情况下有哪些优点和缺点(主要是复杂性与性能)。请提出其他可以使用的解决方案吗?
项目详情:这是一个使用DRF进行后端的SPA。用户将上传excel文件,我想在Django视图中处理它。
答案 0 :(得分:5)
不,这不是矫枉过正。在这种情况下,pandas
可以添加灵活性而不是限制。
例如,您可以允许用户上传以下任何内容:excel,csv,csv.gz。由于pandas
有一个处理各种格式的方法库,因此您可以编写一个函数来选择适当的方法并转换为数据帧。
进入数据框后,转换为字典非常简单。
以下是我用于此目的的函数示例:
import os, pandas as pd
def read_file(filename, **kwargs):
"""Read file with **kwargs; files supported: xls, xlsx, csv, csv.gz, pkl"""
read_map = {'xls': pd.read_excel, 'xlsx': pd.read_excel, 'csv': pd.read_csv,
'gz': pd.read_csv, 'pkl': pd.read_pickle}
ext = os.path.splitext(filename)[1].lower()[1:]
assert ext in read_map, "Input file not in correct format, must be xls, xlsx, csv, csv.gz, pkl; current format '{0}'".format(ext)
assert os.path.isfile(filename), "File Not Found Exception '{0}'.".format(filename)
return read_map[ext](filename, **kwargs)
然后简单地按如下方式调用它:
df = read_file('file.xlsx') # or 'file.csv', 'file.csv.gz', etc
答案 1 :(得分:0)
我想,您可以使用“干净”的lib来处理您需要的文件 http://www.python-excel.org/ 它有很多例子: https://github.com/python-excel/xlwt/tree/master/examples