Fix bug when missing workbook relationship#277
Merged
dilshod merged 1 commit intodilshod:masterfrom Mar 18, 2024
Merged
Conversation
Add a check to see if the list is empty before trying to access it's
contents. If an excel file has an overridden relationship with no word
"book" in the name it will attempt to grab the first item of an empty
list when looking up workbook relationships.
IndexError: list index out of range
There could be a better fix to this issue I'm not well enough versed in
the xslx specification. The following xlsx file caused the issue.
$ unzip -l some_file.xlsx
Archive: some_file.xlsx
Length Date Time Name
--------- ---------- ----- ----
142 02-06-2024 13:28 xl/worksheets/_rels/sheet1.xml.rels
65968555 02-06-2024 13:28 xl/worksheets/sheet1.xml
2078037 02-06-2024 13:28 xl/sharedStrings.xml
9867 02-06-2024 13:28 xl/styles.xml
566 02-06-2024 13:28 xl/_rels/workbook.xml.rels
388 02-06-2024 13:28 xl/workbook.xml
297 02-06-2024 13:28 _rels/.rels
1122 02-06-2024 13:28 [Content_Types].xml
--------- -------
68058974 8 files
In `[Content_types].xml` it is overriding the relationships to point at
`_rels/.rels` rather than `xl/_rels/workbook.xml.rels`. This causes the
`workbook_relationships` list to be empty causes the error mentioned
above. One can see that it does indeed have a workbook relationship,
however it is being overridden.
`[Contenet_types].xml`:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="png" ContentType="image/png"/>
<Default Extension="jpeg" ContentType="image/jpeg"/>
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Default Extension="vml" ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing"/>
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/_rels/.rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
</Types>
`xl/_rels/workbook.xml.rels`:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
</Relationships>
68c2942 to
ef3ff50
Compare
|
@dilshod could you please tag this fix? Thank you kindly |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix bug when missing workbook relationship
Add a check to see if the list is empty before trying to access it's
contents. If an excel file has an overridden relationship with no word
"book" in the name it will attempt to grab the first item of an empty
list when looking up workbook relationships.
There could be a better fix to this issue I'm not well enough versed in
the xslx specification. The following xlsx file caused the issue.
In
[Content_types].xmlit is overriding the relationships to point at_rels/.relsrather thanxl/_rels/workbook.xml.rels. This causes theworkbook_relationshipslist to be empty causes the error mentionedabove. One can see that it does indeed have a workbook relationship,
however it is being overridden.
[Contenet_types].xml:xl/_rels/workbook.xml.rels: