使用OpenXML创buildExcel不会打开文件
我正在使用OpenXML在我的MVC应用程序中创build一个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);
(使用文件名而不是内存stream),一切工作正常,它保存到我的硬盘驱动器,但然后我必须导航到位置打开文件。
任何想法,我可能做错了什么? 提前致谢!
为了什么是值得的,我解决了我的问题。 我的AJAX没有对响应做任何事情,所以我用了一个@ Url.Action链接来代替AJAX调用,
<a href="@Url.Action("GetExcelReport","Remote")">Report</a>