Skip to content

Instantly share code, notes, and snippets.

@hideaki-t
Last active March 16, 2017 14:43
Show Gist options
  • Select an option

  • Save hideaki-t/1af95d03989e557056a8f71e4e399087 to your computer and use it in GitHub Desktop.

Select an option

Save hideaki-t/1af95d03989e557056a8f71e4e399087 to your computer and use it in GitHub Desktop.

Revisions

  1. hideaki-t revised this gist Mar 16, 2017. 2 changed files with 31 additions and 16 deletions.
    16 changes: 0 additions & 16 deletions show_dimension.py
    Original file line number Diff line number Diff line change
    @@ -1,16 +0,0 @@
    import zipfile
    import xml.sax
    import sys

    class H(xml.sax.handler.ContentHandler):
    def startElementNS(self, name, qname, attrs):
    if name[1] == 'dimension':
    print(name, attrs.get('ref'))

    parser = xml.sax.make_parser()
    parser.setFeature(xml.sax.handler.feature_namespaces, True)
    parser.setContentHandler(H())

    with zipfile.ZipFile(sys.argv[1]) as z:
    with z.open('xl/worksheets/sheet1.xml') as f:
    parser.parse(f)
    31 changes: 31 additions & 0 deletions show_xlsx_dimension.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    import zipfile
    import xml.sax
    import sys

    NS = 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'


    class NonLocalExit(Exception):
    pass


    class H(xml.sax.handler.ContentHandler):
    def startElementNS(self, name, qname, attrs):
    if name == (NS, 'dimension'):
    self.ref = attrs.get((None, 'ref'))
    raise NonLocalExit('found')


    parser = xml.sax.make_parser()
    parser.setFeature(xml.sax.handler.feature_namespaces, True)
    handler = H()
    parser.setContentHandler(handler)

    with zipfile.ZipFile(sys.argv[1]) as z:
    with z.open('xl/worksheets/sheet1.xml') as f:
    try:
    parser.parse(f)
    except NonLocalExit:
    pass

    print(handler.ref)
  2. hideaki-t created this gist Mar 16, 2017.
    16 changes: 16 additions & 0 deletions show_dimension.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,16 @@
    import zipfile
    import xml.sax
    import sys

    class H(xml.sax.handler.ContentHandler):
    def startElementNS(self, name, qname, attrs):
    if name[1] == 'dimension':
    print(name, attrs.get('ref'))

    parser = xml.sax.make_parser()
    parser.setFeature(xml.sax.handler.feature_namespaces, True)
    parser.setContentHandler(H())

    with zipfile.ZipFile(sys.argv[1]) as z:
    with z.open('xl/worksheets/sheet1.xml') as f:
    parser.parse(f)