I have had one excursion cancelled by the ship, and another that I’ve just chosen to cancel.
One warning, an excursion I wanted to do was full a few days ahead of time, even with low passenger numbers onboard.
I checked the refund process again just now with the excursions desk and like others have said, if you don’t spend onboard then they will refund you at the end of the trip. It has to be cash, but they did just tell me that they can refund in USD instead of Euros if a passenger prefers.
They’ve also assured me that anything I spend onboard will come first from my non-refundable credit which I have as part of my holiday booking, and only then if that runs out would they start taking from the refunded excursions.