Leitor de planilhas ODS
(por JoaoSOBueno)
Este trechode código - plenamente funcional - pode ler os conteúdos de planilha no Open Document Format - como criado pelo LibreOffice, OpenOffice, BROffice, KOffice, MsOffice 2009.1, Google Docs. (Note que ele lê o conteúdo pré-calculado da planhilha, não reavaliando as fórmulas)
Os dados ficam disponíveis numa estrutura de listas tridimensional em Python
# !/usr/bin/python # coding: utf-8 import sys from xml.etree import ElementTree as ET from zipfile import ZipFile from pprint import pprint # AUTHOR: João S. O. Bueno # Copyright: Fundação CPqD 2010 # License: LGPL v3.0 def get_content(name): z = ZipFile(name) return z.read("content.xml") class Parser(object): levels = {0: "table", 1:"table-row", 2: "table-cell", 3:"p"} def __init__(self, name): xml = get_content(name) self.parse(ET.fromstring(xml)) def parse(self, xml): self.content = self.deep_parse(xml, []) return self.content def deep_parse(self, xml, content, level=0): for child in xml: if child.tag.endswith(self.levels[level]): if level == 3: content = child.text else: content.append(self.deep_parse(child, [], level + 1)) else: self.deep_parse(child, content, level) return content def main(name): parser = Parser(name) pprint (parser.content) if __name__=="__main__": try: main(sys.argv[1]) except IndexError: sys.stderr.write("Please, pass the spreadsheet file name as a parameter to this script") sys.exit(1)
Voltar ao CookBook