如何在Acumatica中添加用于下载excel文件的button

我试图添加button到用户维护和button的点击下载excel文件,包含一些数据。 我已经创build了PXAction,它的方法如上:

public PXAction<Users> getUsers; [PXUIField(DisplayName = "Get Users", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select,Visible = true), PXButton(CommitChanges = true)] public IEnumerable GetUsers(PXAdapter adapter) { var accessByRoles = PXSelect<RolesInGraph>.Select(this.Base); var usersByRole = PXSelect<UsersInRoles>.Select(this.Base); var dt = GetTable();//GetTable returns some DataTable just for test now XLWorkbook workbook = new XLWorkbook(); workbook.Worksheets.Add(dt, "UserAccessRigths"); using (MemoryStream MyMemoryStream = new MemoryStream()) { workbook.SaveAs(MyMemoryStream); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=\"UserAccessRigths.xlsx\""); HttpContext.Current.Response.AppendHeader("Content-Length", MyMemoryStream.ToArray().Length.ToString()); HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Current.Response.BinaryWrite(MyMemoryStream.ToArray()); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); } return null; } 

一切正常,但浏览器下载必须启动的部分。 我得到了答复的Excel,但没有被下载。 这是我在浏览器中得到的回应: 在这里输入图像说明

如果有人能帮助我,我将非常感激。
提前致谢

尝试PXRedirectToFileException将用户浏览器redirect到Excel文件。 主stream浏览器的默认行为是通过扩展检测Excel MIMEtypes并启动下载。 PXRedirectToFileException的第二个参数用于强制下载。

 throw new PXRedirectToFileException(new PX.SM.FileInfo(Guid.NewGuid(), "UserAccessRigths.xlsx", null, MyMemoryStream.ToArray()), true); 
Interesting Posts