Model
public class SpreadsheetModel
{
public String fileName { get; set; }
public String[,] contents { get; set; }
}
ACTION
public ActionResult Excel()
{
SpreadsheetModel mySpreadsheet = new SpreadsheetModel();
mySpreadsheet.contents = new String[2, 2]
{
{"Cell11","Cell12"},
{"Cell21","Cell22"}
};
mySpreadsheet.fileName = "ProofOfConcept.xls";
return View(mySpreadsheet);
}
View
@model MvcApplication5.Models.SpreadsheetModel
@{
Layout = null;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", "attachment; filename=" + Model.fileName);
//Content-Disposition is defined in RFC-2183
}
<?xml version="1.0" encoding="utf-16"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<ss:Worksheet ss:Name="Sheet1">
<ss:Table>
@for (int i = 0; i < Model.contents.GetLength(0); ++i)
{
<ss:Row>
@for (int j = 0; j < Model.contents.GetLength(1); ++j)
{
<ss:Cell>
<ss:Data ss:Type="String">@Model.contents[i, j]</ss:Data>
</ss:Cell>
}
</ss:Row>
}
</ss:Table>
</ss:Worksheet>
</ss:Workbook>