我正在使用OpenXML在我的MVC应用程序中创建Excel文档。就代码而言,我认为我正确地做了一切。
C#
public FileResult GetExcelReport()
{
// Build dataset
var excelStream = CreateSpreadsheet(data);
return new FileStreamResult(excelStream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet);
}
internal MemoryStream CreateSpreadsheet(DataSet data)
{
var stream = new MemoryStream();
SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook);
// do some stuff to make a spreadsheet
ssDoc.Close();
return stream;
}
JS
function createExcelReport(){
$.ajax({
url: "/Remote/GetExcelReport",
type: "GET",
dataType: "text",
cache: false,
data: {
sData: // params for report
},
success: function(data){
window.location.href = "/Page/Index"
}, error: function(error){
}
});
}
我希望文件在浏览器中打开而不实际下载/保存。这个过程看起来很有效,但文件并没有打开。
如果我改变
SpreadsheetDocument ssDoc = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook);
到
SpreadsheetDocument ssDoc = SpreadsheetDocument.Create("filename.xlsx", SpreadsheetDocumentType.Workbook);
(使用文件名而不是内存流),一切正常并保存到我的硬盘,但后来我必须导航到该位置才能打开文件。
关于我可能做错什么的任何想法?提前谢谢!
答案 0 :(得分:0)
为了它的价值,我解决了我的问题。我的AJAX没有对响应做任何事情,所以我使用@ Url.Action链接而不是AJAX调用 -
<a href="@Url.Action("GetExcelReport","Remote")">Report</a>