Using cell_access for repeated operations on same cell
You can obtain a cell_access
instance either from
model_context
or document
class.
Here is an example of how to obtain it from a model_context
instance:
ixion::model_context cxt;
cxt.append_sheet("Sheet");
// fill this model context
ixion::abs_address_t A1(0, 0, 0);
ixion::cell_access ca = cxt.get_cell_access(A1);
Here is an example of how to obtain it from a document
instance:
ixion::document doc;
doc.append_sheet("Sheet");
// fill this document
ixion::cell_access ca = doc.get_cell_access("A1");
Once you have your cell_access
instance, you can, for instance,
print the value of the cell as follows:
switch (ca.get_value_type())
{
case ixion::cell_value_t::numeric:
{
double v = ca.get_numeric_value();
std::cout << "numeric value: " << v << std::endl;
break;
}
case ixion::cell_value_t::string:
{
std::string_view s = ca.get_string_value();
std::cout << "string value: " << s << std::endl;
break;
}
case ixion::cell_value_t::boolean:
{
std::cout << "boolean value: " << ca.get_boolean_value() << std::endl;
break;
}
case ixion::cell_value_t::error:
{
ixion::formula_error_t err = ca.get_error_value();
std::cout << "error value: " << ixion::get_formula_error_name(err) << std::endl;
break;
}
case ixion::cell_value_t::empty:
{
std::cout << "empty cell" << std::endl;
break;
}
default:
std::cout << "???" << std::endl;
}
The complete source code of this example is avaiable here.