我正在使用MVC 4。我使用以下简单的代码动态生成Excel文件。我的托管环境是Azure。
我创建了一个根路径,然后尝试保存该Excel文件。
问题是,当我的ActionResult方法响应返回时,它会给出默认弹出窗口以打开文件,但文件名中包含GUID而不是我提供的文件名。
Excel文件生成代码:
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
我创建了一个根路径,然后尝试保存该Excel文件。
问题是,当我的ActionResult方法响应返回时,它会给出默认弹出窗口以打开文件,但文件名中包含GUID而不是我提供的文件名。
Excel文件生成代码:
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
// ...
//Save
LocalResource resource = RoleEnvironment.GetLocalResource("MyValue");
string tempPath = resource.RootPath + "DemoFile.xls";
return tempPath;
tempPath返回的路径类似于C:\AppData\Local\dftmp\Resources\11a2435c-998c-4fe8-aa55-8bb42455b4ca\directory\DemoFile.xls
。
下载文件弹窗中没有将文件名作为DemoFile
,而是给了一些GUID,为什么?
ActionResult
方法代码:
public ActionResult DownloadExcel() {
string path = ExcelGenerationCode(fileName);
Stream s = new FileStream(path, FileMode.Open, FileAccess.Read);
return new FileStreamResult(s, "application/vnd.ms-excel");
}
也尝试给名称属性命名
public ActionResult DownloadExcel() {
string path = ExcelGenerationCode(fileName);
Stream s = new FileStream(path, FileMode.Open, FileAccess.Read);
return new FileStreamResult(s, "application/vnd.ms-excel")
{
FileDownloadName = "myexcelFILE1.xls"
};
}
在提供文件名参数时出现以下错误。
我有足够的空间和内存。
FileStreamResult
设置文件名,请使用File(Stream, String, String)
重载。但是您不必手动实例化流,File(String, String, String)
在内部执行相同的操作,因此您将使用更少的代码。 - CodeCaster