mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
commit
51406e4755
|
@ -2091,13 +2091,15 @@ void xlsx_consumer::read_shared_string_table()
|
|||
{
|
||||
expect_start_element(qn("spreadsheetml", "si"), xml::content::complex);
|
||||
auto rt = read_rich_text(qn("spreadsheetml", "si"));
|
||||
target_.add_shared_string(rt);
|
||||
//by reading in it can happen we have similar strings from modified excel worksheets...
|
||||
//so allow to add duplicates
|
||||
target_.add_shared_string(rt, true);
|
||||
expect_end_element(qn("spreadsheetml", "si"));
|
||||
}
|
||||
|
||||
expect_end_element(qn("spreadsheetml", "sst"));
|
||||
|
||||
if (has_unique_count && unique_count != target_.shared_strings().size())
|
||||
if (has_unique_count && unique_count != target_.shared_strings_by_id().size())
|
||||
{
|
||||
throw invalid_file("sizes don't match");
|
||||
}
|
||||
|
|
|
@ -1390,9 +1390,18 @@ std::size_t workbook::add_shared_string(const rich_text &shared, bool allow_dupl
|
|||
}
|
||||
}
|
||||
|
||||
auto sz = d_->shared_strings_ids_.size();
|
||||
d_->shared_strings_ids_[shared] = sz;
|
||||
//it can happen that similar strings are more then onetime in the shared stringtable (Excel bugfix?)
|
||||
//shared_strings_values map should start on position 0
|
||||
auto sz = d_->shared_strings_values_.size();
|
||||
if (d_->shared_strings_values_.count(sz) > 0)
|
||||
{
|
||||
// something went wrong!
|
||||
throw invalid_file("Error in shared string table!");
|
||||
}
|
||||
|
||||
d_->shared_strings_values_[sz] = shared;
|
||||
d_->shared_strings_ids_[shared] = sz;
|
||||
|
||||
|
||||
return sz;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user