0
Dies ist meine Methode, aber meine Antwort ist ein einfaches HTML, ich dupliziert nur einen erfolgreichen Code in method2 innerhalb ExportReportChip() und es funktioniert nichtMeine Methode sendet HTML statt Excel-Datei
public ActionResult SuccessFulMethod(DateTime reference, MobileFilter? filter)
{
var itens = GetAccountModel(reference, filter);
var text = "";
GridView gv = new GridView();
var products = new System.Data.DataTable("table");
products.Columns.Add("Referência", typeof(string));
products.Columns.Add("Número", typeof(string));
products.Columns.Add("Funcionário", typeof(string));
products.Columns.Add("Empresa", typeof(string));
products.Columns.Add("Particular", typeof(string));
products.Columns.Add("Total", typeof(string));
products.Columns.Add("Status", typeof(string));
products.Columns.Add("RDESP", typeof(string));
foreach (var i in itens.Mobiles)
{
var reimbursementid = i.ReimbursementId;
if (i.TotalEnterprise == 0)
text = "Sem RDESP";
else
{
if (i.CurrentState == WorkFlowState.Approved)
text = "Com RDESP";
else
text = "Aguardando";
}
products.Rows.Add(itens.Bill.Reference.ToString("MM/yyyy", CultureInfo.CurrentUICulture),
i.PhoneNumber,
i.Employee.Name,
i.TotalEnterprise.ToString("C", CultureInfo.CurrentUICulture),
i.TotalParticular.ToString("C", CultureInfo.CurrentUICulture),
i.Total.ToString("C", CultureInfo.CurrentUICulture),
i.CurrentState,
text
);
}
gv.DataSource = products;
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=Contas_de_Celular: " + ".xls");
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction(ACCOUNT_VIEW_NAME);
}
Diese die Methode ist, die HTML-
public ActionResult ExportReportChip()
{
var items = GetMobileChipsOwner();
GridView gv = new GridView();
var products = new System.Data.DataTable("table");
products.Columns.Add("Chip", typeof(string));
products.Columns.Add("Dono", typeof(string));
products.Columns.Add("Serviços", typeof(string));
products.Columns.Add("Status", typeof(string));
products.Columns.Add("DependenteX", typeof(string));
products.Rows.Add("1212121", "dono", "service Teste", "i.Status", "i.DependentName");
gv.DataSource = products;
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=Contas_de_Celular:"+".xls");
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction(CHIP_REPORT_VIEW_NAME);
}
so gibt, ist dies die Rückkehr in Chrom:
':' ist nicht in einem Dateinamen gültig. –
Dies wird immer HTML zurückgeben, Sie können es als .xls benennen und Excel öffnet es, aber seine * nicht * eine Excel-Datei, sein HTML. –
Warum schreibst du in die Antwort * und * eine Umleitung zurück? Das ergibt keinen Sinn. Gib einfach ein 'FileResult' zurück. – David