The engine formats numbers and date-time values depending on CultureInfo.CurrentCulture. You can set its value accordingly before building a report as follows:
CultureInfo.CurrentCulture = new CultureInfo("fr-CA");
Yes, you are right. It is possible to override built-in formatting by using a custom type (see Setting up Known External Types for details), but it still requires to modify your code.