mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
fix exception "sizes don’t match"
for more detail https://blog.csdn.net/baidu_30570701/article/details/89437242
This commit is contained in:
parent
297b331435
commit
00fd832972
|
@ -151,6 +151,8 @@ public:
|
|||
/// </summary>
|
||||
bool operator!=(const std::string &rhs) const;
|
||||
|
||||
std::size_t unique_index{0};
|
||||
|
||||
private:
|
||||
/// <summary>
|
||||
/// The runs that make up this rich text.
|
||||
|
@ -171,6 +173,7 @@ public:
|
|||
{
|
||||
res ^= std::hash<std::string>()(r.first);
|
||||
}
|
||||
res ^= std::hash<std::string>()(std::to_string(k.unique_index));
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ rich_text &rich_text::operator=(const rich_text &rhs)
|
|||
runs_ = rhs.runs_;
|
||||
phonetic_runs_ = rhs.phonetic_runs_;
|
||||
phonetic_properties_ = rhs.phonetic_properties_;
|
||||
unique_index = rhs.unique_index;
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -69,6 +70,7 @@ void rich_text::clear()
|
|||
runs_.clear();
|
||||
phonetic_runs_.clear();
|
||||
phonetic_properties_.clear();
|
||||
unique_index = 0;
|
||||
}
|
||||
|
||||
void rich_text::plain_text(const std::string &s, bool preserve_space = false)
|
||||
|
@ -151,7 +153,7 @@ bool rich_text::operator==(const rich_text &rhs) const
|
|||
|
||||
if (phonetic_properties_ != rhs.phonetic_properties_) return false;
|
||||
|
||||
return true;
|
||||
return unique_index == rhs.unique_index;
|
||||
}
|
||||
|
||||
bool rich_text::operator==(const std::string &rhs) const
|
||||
|
|
|
@ -2270,10 +2270,12 @@ void xlsx_consumer::read_shared_string_table()
|
|||
unique_count = parser().attribute<std::size_t>("uniqueCount");
|
||||
}
|
||||
|
||||
size_t unique_index = 0;
|
||||
while (in_element(qn("spreadsheetml", "sst")))
|
||||
{
|
||||
expect_start_element(qn("spreadsheetml", "si"), xml::content::complex);
|
||||
auto rt = read_rich_text(qn("spreadsheetml", "si"));
|
||||
rt.unique_index = unique_index++;
|
||||
target_.add_shared_string(rt, true);
|
||||
expect_end_element(qn("spreadsheetml", "si"));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user