jlec        15/06/22 12:56:52

  Added:                xlrd-0.9.3-column.patch
  Log:
  Fix reading of LO/OO stored files
  
  (Portage version: 2.2.20/cvs/Linux x86_64, signed Manifest commit with key 
E9402A79B03529A2!)

Revision  Changes    Path
1.1                  dev-python/xlrd/files/xlrd-0.9.3-column.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-python/xlrd/files/xlrd-0.9.3-column.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/dev-python/xlrd/files/xlrd-0.9.3-column.patch?rev=1.1&content-type=text/plain

Index: xlrd-0.9.3-column.patch
===================================================================
>From 6c2c1057d2780c079218fe988d1d5243eefec159 Mon Sep 17 00:00:00 2001
From: Konstantin Lopuhin <[email protected]>
Date: Wed, 18 Jun 2014 12:43:04 +0400
Subject: [PATCH] fix parsing of bad dimensions

---
 xlrd/xlsx.py | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/xlrd/xlsx.py b/xlrd/xlsx.py
index 53fbb89..763df0c 100644
--- a/xlrd/xlsx.py
+++ b/xlrd/xlsx.py
@@ -73,7 +73,8 @@ def augment_keys(adict, uri):
     _UPPERCASE_1_REL_INDEX[_x] = 0
 del _x
 
-def cell_name_to_rowx_colx(cell_name, letter_value=_UPPERCASE_1_REL_INDEX):
+def cell_name_to_rowx_colx(cell_name, letter_value=_UPPERCASE_1_REL_INDEX,
+        allow_no_col=False):
     # Extract column index from cell name
     # A<row number> => 0, Z =>25, AA => 26, XFD => 16383
     colx = 0
@@ -85,9 +86,18 @@ def cell_name_to_rowx_colx(cell_name, 
letter_value=_UPPERCASE_1_REL_INDEX):
             if lv:
                 colx = colx * 26 + lv
             else: # start of row number; can't be '0'
-                colx = colx - 1
-                assert 0 <= colx < X12_MAX_COLS
-                break
+                if charx == 0:
+                    # there was no col marker
+                    if allow_no_col:
+                        colx = None
+                        break
+                    else:
+                        raise Exception(
+                                'Missing col in cell name %r', cell_name)
+                else:
+                    colx = colx - 1
+                    assert 0 <= colx < X12_MAX_COLS
+                    break
     except KeyError:
         raise Exception('Unexpected character %r in cell name %r' % (c, 
cell_name))
     rowx = int(cell_name[charx:]) - 1
@@ -562,9 +572,11 @@ def do_dimension(self, elem):
         if ref:
             # print >> self.logfile, "dimension: ref=%r" % ref
             last_cell_ref = ref.split(':')[-1] # example: "Z99"
-            rowx, colx = cell_name_to_rowx_colx(last_cell_ref)
+            rowx, colx = cell_name_to_rowx_colx(
+                    last_cell_ref, allow_no_col=True)
             self.sheet._dimnrows = rowx + 1
-            self.sheet._dimncols = colx + 1
+            if colx is not None:
+                self.sheet._dimncols = colx + 1
 
     def do_merge_cell(self, elem):
         # The ref attribute should be a cell range like "B1:D5".




Reply via email to