title: Reading excel files with xlrd
body: <p>I'm having problems reading .xls files written by a Perl script which I have no control over. The files contain some formatting and line breaks within cells.</p>
  
  <pre><code>filename = '/home/shared/testfile.xls'
  book = xlrd.open_workbook(filename)
  sheet = book.sheet_by_index(0)
  for rowIndex in xrange(1, sheet.nrows):
      row = sheet.row(rowIndex)
  </code></pre>
  
  <p>This is throwing the following error:</p>
  
  <pre><code>_locate_stream(Workbook): seen
      0  5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
     20  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
  172480= 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
  172500  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 2
  172520  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
  173840= 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
  173860  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1
  173880  1 1 1 1 1 1 1 1
  Traceback (most recent call last):
    File "/home/shared/xlrdtest.py", line 5, in &lt;module&gt;
      book = xlrd.open_workbook(filename)
    File "/usr/local/lib/python2.7/site-packages/xlrd/__init__.py", line 443, in open_workbook
      ragged_rows=ragged_rows,
    File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 84, in open_workbook_xls
      ragged_rows=ragged_rows,
    File "/usr/local/lib/python2.7/site-packages/xlrd/book.py", line 616, in biff2_8_load
      self.mem, self.base, self.stream_len = cd.locate_named_stream(qname)
    File "/usr/local/lib/python2.7/site-packages/xlrd/compdoc.py", line 393, in locate_named_stream
      d.tot_size, qname, d.DID+6)
    File "/usr/local/lib/python2.7/site-packages/xlrd/compdoc.py", line 421, in _locate_stream
      raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))
  xlrd.compdoc.CompDocError: Workbook corruption: seen[2] == 4
  </code></pre>
  
  <p>I'm not able to find any info about CompDocError or Workbook corruption, even less the seen[2] == 4 part.</p>