.netCore .netMVC 后端下载Excel 并弹出下载框

1 篇文章 0 订阅

1.前段代码   使用window.location.href 访问后端接口

function Export()
   {
       window.location.href = "/SupplyChainManage/ArrivalBill/ExportInvVenInfo";
         
    }

2.后端  返回File

   public async Task<ActionResult> ExportInvVenInfo(string VenName, string cVenName, string BeginTime, string EndTime)
        {
            StringWriter strWriter = new StringWriter();
            List<VenInvClass> VenInvList = new List<VenInvClass>();
            //获取产品
            var detailObj = (await arrivalBillBLL.GetDetailslistForHZInfo(new ArrivalBillListParam { })).Data;
            //获取供应商
            var detail_Ven = (await arrivalBillBLL.GetVendorListForHZ(new ArrivalBillListParam { VenClassName = VenName, VenName = cVenName })).Data;
            //给产品赋值
            foreach (var item in detailObj)
            {
                VenInvClass inv = new VenInvClass();
                inv.Name = item.FreeItem1;
                inv.VenList = new List<VendorClass>();

                foreach (var itemVen in detail_Ven)
                {
                    VendorClass venc = new VendorClass();
                    venc.Name = itemVen.cVenName;
                    venc.VIQtyEntity = new VenInvQtyClass();
                    //根据供应商 颜色,查找对应的数量,辅数量

                    var detail_Qty = (await arrivalBillBLL.GetDetailsForVenAndInv(itemVen.VendorId, item.FreeItem1, BeginTime, EndTime)).Data;
                    if (detail_Qty != null)
                    {
                        venc.VIQtyEntity.Qty = detail_Qty.Qty == null ? 0 : detail_Qty.Qty;
                        venc.VIQtyEntity.Qty2 = detail_Qty.Qty2 == null ? 0 : detail_Qty.Qty2;
                    }
                    else
                    {
                        venc.VIQtyEntity.Qty = 0;
                        venc.VIQtyEntity.Qty2 = 0;
                    }
                    inv.VenList.Add(venc);
                }
                VenInvList.Add(inv);
            }

            StringBuilder sb = new StringBuilder();
            sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
            sb.Append("<thead>");
            sb.Append("<tr>");
            sb.Append("<th>厂家</th>");
            sb.Append("<th>颜色</th>");
            foreach (var item in VenInvList)
            {
                sb.Append("<th>" + item.Name + "</th>");
            }
            sb.Append("<th>合计</th>");
            sb.Append("</tr>");
            sb.Append("</thead>");
            sb.Append("<tbody>");
            for (int i = 0; i < VenInvList[0].VenList.Count; i++)
            {
                var QtyHJ = 0.0;
                var Qty2HJ = 0.0;
                sb.Append("<tr>");
                sb.Append("<td rowspan='2'>" + VenInvList[0].VenList[i].Name + "</td> <td>重量/kg</td>");
                foreach (var item2 in VenInvList)
                {
                    QtyHJ += Convert.ToDouble(item2.VenList[i].VIQtyEntity.Qty);
                    sb.Append("<td>"+ item2.VenList[i].VIQtyEntity.Qty + "</td>");
                }
                sb.Append("<td>" + Math.Round(QtyHJ,3) + "</td></tr>");
                sb.Append("<tr > <td>数量/支</td>");
                foreach (var item2 in VenInvList)
                {
                    Qty2HJ += Convert.ToDouble(item2.VenList[i].VIQtyEntity.Qty2);
                    sb.Append("<td>" + item2.VenList[i].VIQtyEntity.Qty2 + "</td>");
                }
                sb.Append("<td>" + Math.Round(Qty2HJ, 3) + "</td></tr>");
            }
            strWriter.Write(sb.ToString());
            byte[] fileContents = Encoding.GetEncoding("utf-8").GetBytes("<html><head><meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">" + strWriter.ToString() + "</body></html>");
            return   File(fileContents, "application/vnd.ms-excel", string.Format("{0}.xls", "采购汇总" + DateTime.Now.Date.ToString("yyyyMMdd")));
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值