因此,我在我的應用程序中有一個頁面,用戶可以下載呈現視圖的「硬拷貝」,它表示技能及其對角色的要求在一個項目中,顯示任何人在角色上完成上述技能。生成一個Excel文件,然後從ASP.NET MVC應用程序中的瀏覽器下載
我有一個csv文件的功能,因爲我可以使用StringBuilder
創建逗號分隔文件。
但是,在接近Excel的方法之前,我想要一些光格式,我意識到我不能以同樣的方式實現。
我以前使用Interop來生成Excel文件,但是如何才能創建一個可以在生成後下載的文件?
這裏是工作的代碼生成並返回一個CSV文件:
public ActionResult DownloadSQEPToCSV(int projectID)
{
//source my data
StringBuilder sBuilder = new StringBuilder();
sBuilder.Append("SQEPMatrix, For Project," + data.First().Project.ContractNumber);
foreach (var role in data)
{
sBuilder.Append("\r\nRole:," + role.First().Title.Name);
sBuilder.Append("\r\nSkill,Requirement");
foreach (var person in role.Distinct(uCom))
{
sBuilder.Append("," + person.User.UserDetail.Name);
}
foreach (var skill in role.Distinct(uCom))
{
//More stuff to generate what I want
}
sBuilder.Append("\r\n");
}
//Attach file to the header
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=SQEPMatrix for " + data.First().Project.ContractNumber + ".csv");
Response.ContentType = "text/csv";
Response.Write(sBuilder);
Response.End();
return SetTitleAndID("SQEP","dl_sqep_csv");
}
此代碼是由下面的腳本調用:
function download(id) {
window.location.href = '../../Project/DownloadSQEPExcel?projectID=' + id;
}
所以我的問題是我怎麼能生成一個Excel電子表格,並以類似於我如何返回我的.csv文件的方式返回生成的文件?
你必須產生Excel的第一個文件,就保存它本地驅動器,然後將其作爲'FileResult'提供。 http://stackoverflow.com/a/1187270/1324019 – Mansfield