I see some potential for improvements here, I see how the Spreadsheet entirely depends on the JSON structure. It doesn't have to be like this as the setDataSource() method shows clearly that the columns could be further configured:
https://www.telerik.com/forums/datasource---specify-columns#msCK2ytWcESxeUMs-6a3uQ
Therefore, the Sheet columns could be configured upon the widget initialization. Such configuration options could be represented in the following manner for the HTML helper version of the widget:
.Columns<Kendo.Mvc.Examples.Models.SpreadsheetProductViewModel>(columns =>
{
columns.Add(c => c.ProductId).Name("Product ID").Width(100);
columns.Add(c => c.ProductName).Name("Name").Width(415);
})