【发布时间】:2016-10-24 21:14:56
【问题描述】:
我不确定我在这里缺少什么。我有一个按钮,单击该按钮时,我正在使用 javascript 调用控制器。该控制器应创建一个 excel 文件并将其返回给用户,让他们能够下载/保存文件。我尝试了几种不同的方法,但无法使其正常工作。这是我的 javascript 方面:
function exportList() {
var val = $("#team-dropdown").val();
const date = new Date().toISOString();
const param = {
"Date": date,
"GroupID": 1
}
$.ajax({
url: "@Url.Action("ExportToExcel", "Home")",
type: "POST",
data: param
});
}
这是我的服务器端:
public FileResult ExportToExcel(DateTime date, int groupID)
{
Load l = new Load();
List<Load> loadList = l.GetLoadsForGroup(date, groupID);
var fileDownloadName = "fileName.xlsx";
var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
ExcelPackage pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("New workbook");
ws.View.ShowGridLines = true;
ws.DefaultColWidth = 25;
ws.Cells[1, 1].Value = "Order #";
var currRow = 2;
foreach (var load in loadList)
{
ws.Cells[2, 2].Value = load.LoadNumber;
}
var fs = new MemoryStream();
pck.SaveAs(fs);
fs.Position = 0;
var fsr = new FileStreamResult(fs, contentType);
fsr.FileDownloadName = fileDownloadName;
return (fsr);
}
不确定最好的方法是什么。如果有更好的方法,请随时详细说明。
【问题讨论】:
-
您好,我使用
ActionResult代替 FileResult 并且我发送的输出是:Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName+ "\""); Response.BinaryWrite(data); Response.Flush(); Response.End(); -
你好。我刚刚使用了您的代码,并且能够通过使用 html
form来获取工作簿。如下:<form action="/Home/ExportToExcel"> <input type="submit" value="ok" /> </form>试试看 -
@VagnerLucas 让它工作。感谢您的帮助!
-
不错。刚刚改进了我的第一条评论作为答案。干杯!
标签: javascript c# asp.net excel excelpackage