the standard xlnt::cell and xlnt::cell_reference have plenty of extra functionality that just slows things down during (de)serialisation These intermediate structs can be used to minimise overhead before transforming to the final type