Merge pull request #451 from amiremohamadi/fix-cell-reference-parsing

fix cell reference parsing
This commit is contained in:
Thomas Fussell 2020-03-20 16:16:40 -04:00 committed by GitHub
commit 6c52e52487
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 4 deletions

View File

@ -174,13 +174,13 @@ std::pair<std::string, row_t> cell_reference::split_reference(
if (column_string[0] == '$') if (column_string[0] == '$')
{ {
absolute_row = true; absolute_column = true;
column_string = column_string.substr(1); column_string = column_string.substr(1);
} }
if (row_string[0] == '$') if (row_string[0] == '$')
{ {
absolute_column = true; absolute_row = true;
row_string = row_string.substr(1); row_string = row_string.substr(1);
} }

View File

@ -665,8 +665,16 @@ private:
xlnt_assert_throws(xlnt::cell_reference("A"), xlnt::invalid_cell_reference); xlnt_assert_throws(xlnt::cell_reference("A"), xlnt::invalid_cell_reference);
auto ref = xlnt::cell_reference("$B$7"); auto ref = xlnt::cell_reference("$B$7");
xlnt_assert(ref.row_absolute()); xlnt_assert_equals(ref.row_absolute(), true);
xlnt_assert(ref.column_absolute()); xlnt_assert_equals(ref.column_absolute(), true);
ref = xlnt::cell_reference("$B7");
xlnt_assert_equals(ref.row_absolute(), false);
xlnt_assert_equals(ref.column_absolute(), true);
ref = xlnt::cell_reference("B$7");
xlnt_assert_equals(ref.row_absolute(), true);
xlnt_assert_equals(ref.column_absolute(), false);
xlnt_assert(xlnt::cell_reference("A1") == "A1"); xlnt_assert(xlnt::cell_reference("A1") == "A1");
xlnt_assert(xlnt::cell_reference("A1") != "A2"); xlnt_assert(xlnt::cell_reference("A1") != "A2");