包位于xlrd的顶部,它提供了一组单元解析器,使您的导入更容易。
xlsimport的Python项目详细描述
安装
按常规安装软件包,使用命令
pip install xlsimport
包需要xlrd和dateutils。
用法
xlsimport目前只提供api,没有演示,也没有默认设置。但开始使用它很简单。
首先,您需要创建xlsimport.models.Format类的后代,例如:
class SubjectFormat(Format): cells = ( {'name': 'Name', 'parsers': (TextCellToStringParser,)}, {'name': 'Hours', 'parsers': (TextCellToIntParser, NumberCellToIntParser,)}, {'name': 'Short name', 'parsers': (TextCellToStringParser,)}, ) def to_python(self, data_row): return { 'name': data_row[0], 'short_name': re.sub(r'[0-9-]+', '', data_row[2]), 'hours': data_row[1], }
在这段代码中,Name列只能包含文本单元格,并且它们用字符串表示。 第二列Hours可能包含文本单元格或数字单元格。它们被表示为整数。注意解析器 适用于订单。
如果要跳过列,请给parsers值xlsimport.models.dummy_parsers。 如果单元格必须为空,则在这种情况下有blank_parsers值。
接下来,您应该创建知道如何处理数据的类(创建或更新记录)。 您还可能希望将其放入类似django命令的类中。
下面是我的示例:
... class Command(BaseCommand): ... def handle(self, *args, **options): source_filename = args[0] source_file = open(source_filename, 'r') descriptor, name = tempfile.mkstemp() os.fdopen(descriptor, 'wb').write(source_file.read()) doc = xlrd.open_workbook(name, formatting_info=True) format_doc = SubjectFormat(doc) for index, parsed_row in enumerate(format_doc): process_row(index, parsed_row)
process_row这里是一个从上面的to_python方法获取字典的函数。
小费。我创建了一个gist使用linux dialog的好例子。