summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-09-09 10:18:29 -0400
committerJesse Luehrs <doy@tozt.net>2013-09-09 10:18:29 -0400
commit70e0ccd7243ee9448a36118d70e4441fab267315 (patch)
treea05d95c0953a3cf475097f4f8fb20b5383cb45bf /lib
parenta74ed93e5eba524e87271c702043c9cddae27d9d (diff)
downloadspreadsheet-parsexlsx-70e0ccd7243ee9448a36118d70e4441fab267315.tar.gz
spreadsheet-parsexlsx-70e0ccd7243ee9448a36118d70e4441fab267315.zip
fix string lookups when cells have complicated formatting (#6)
if a cell has multiple different formats, this shows up as multiple different rich text parts in the shared string table, so make sure to only count each shared string table entry once
Diffstat (limited to 'lib')
-rw-r--r--lib/Spreadsheet/ParseXLSX.pm7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/Spreadsheet/ParseXLSX.pm b/lib/Spreadsheet/ParseXLSX.pm
index 1aa14eb..6efc3b8 100644
--- a/lib/Spreadsheet/ParseXLSX.pm
+++ b/lib/Spreadsheet/ParseXLSX.pm
@@ -238,8 +238,11 @@ sub _parse_shared_strings {
return [
map {
- { Text => $_->text } # XXX are Unicode, Rich, or Ext important?
- } $strings->find_nodes('//t')
+ my $node = $_;
+ # XXX this discards information about formatting within cells
+ # not sure how to represent that
+ { Text => join('', map { $_->text } $node->find_nodes('t')) }
+ } $strings->find_nodes('//si')
];
}