We were in Canada this summer and got a small amount of cash at the airport exchange desk as we were staying in Vancouver for three days. We mainly used it for tips. Otherwise we used credit cards. Last fall we were on the Magic's Eastern Canadian cruise and got by with just credit cards. We never once used cash. Yes, most Canadian business will take US dollars, but you are just giving away the exchange rate. If it's a $10 purchase - no biggie. It depends on what you paying for. A large purchase will cost you a lot more in US currency than using a credit card or making the exchange to Canadian currency.
Even if you could exchange it on the ship, I seriously doubt the exchange rate would be as favorable as what you get from an ATM (plentiful - this Canada after all), or using credit cards.