anchor.diff:  class XlsxDecoder extends SpreadsheetDecoder {
     List<String> _sharedStrings = new List<String>();
     List<int> _numFormats = new List<int>();
  +  String _stylesTarget;
  +  String _sharedStringsTarget;
  +  Map<String,String> _worksheetTargets = new Map<String,String>();
   
     XlsxDecoder(Archive archive) {
       this._archive = archive;
       _tables = new Map<String, SpreadsheetTable>();
  +    _parseRelations();
       _parseStyles();
       _parseSharedStrings();
       _parseContent();
     }
   
  +  _parseRelations() {
  +    var relations = _archive.findFile('xl/_rels/workbook.xml.rels');
  +    if (relations != null) {
  +      relations.decompress();
  +      var document = parse(UTF8.decode(relations.content));
  +      document.findAllElements('Relationship').forEach((node) {
  +        switch (node.getAttribute('Type')) {
  +          case _relationshipsStyles:
  +            _stylesTarget = node.getAttribute('Target');
  +            break;
  +          case _relationshipsWorksheet:
  +            _worksheetTargets[node.getAttribute('Id')] = node.getAttribute('Target');
  +            break;
  +          case _relationshipsSharedStrings:
  +            _sharedStringsTarget = node.getAttribute('Target');
  +            break;
  +        }
  +      });
  +    }
  +  }
  +
     _parseStyles() {
  -    var styles = _archive.findFile('xl/styles.xml');
  +    var styles = _archive.findFile('xl/$_stylesTarget');
       if (styles != null) {
         styles.decompress();
         var document = parse(UTF8.decode(styles.content));
  
positive.code: part of spreadsheet_decoder;
  
  /// Convert a character based column
  int lettersToNumeric(String letters) {
  
negative.code:   }
  
    _parseSharedStrings() {
      var sharedStrings = _archive.findFile('xl/$_sharedStringsTarget');
      if (sharedStrings != null) {
        sharedStrings.decompress();
        var document = parse(UTF8.decode(sharedStrings.content));
  