.net下载到本地为excel格式

接口:
        //方法1   有后端独立完成,前端只需要请求
        /// <summary>
        /// 部门职务下载
        /// </summary>
        /// <returns></returns>
        public ActionResult DemoPostDownLoad()
        {
            var caseid = (string)Session["CaseId"];
            var companyId = (string)Session["CompanyId"];

            var demoPost = new List<DemoPostAndAge>();     //职务年龄参数类(就两个字段)

            #region 不需要修改,这里是创建excel表及工作簿

            IWorkbook workbook = new HSSFWorkbook();

            var tipStyle = workbook.CreateCellStyle();
            tipStyle.Alignment = HorizontalAlignment.Center;
            var tipFont = workbook.CreateFont();
            tipFont.IsBold = true;
            tipStyle.SetFont(tipFont);

            var titleStyle = workbook.CreateCellStyle();
            titleStyle.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;
            titleStyle.FillPattern = FillPattern.SolidForeground;
            titleStyle.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index;
            var titleFont = workbook.CreateFont();
            titleFont.Color = IndexedColors.White.Index;
            titleStyle.SetFont(titleFont);

            ISheet sheet1 = workbook.CreateSheet("部门职务");    //工作簿名称

            IRow sheet1Title = sheet1.CreateRow(0);

            #endregion

            #region 数据写入职务及年龄参数类

            //职位
            var selectPost = _dbContext.SelectPostList(caseid).ToList();

            //查询所有个人信息
            var basicInfo = _dbContext.Hireds.Select(m => new { m.Age, m.Sex, m.CaseallPostId, m.CaseallPost, m.CompanyId, m.Deleted })
                                                 .Where(m => m.CompanyId == companyId && !m.Deleted)
                                                 .ToList();

            foreach (var item in selectPost)
            {
                var demp = new DemoPostAndAge();

                int average = 0;
                var numbertopeople = basicInfo.Where(m => m.CaseallPost.PostId == item.Id).ToList();
                var agesum = basicInfo.Sum(m => m.Age);

                if (numbertopeople.Count != 0 && agesum != 0)
                {
                    average = agesum / numbertopeople.Count;
                }

                demp.DemoPost = item.Name;
                demp.AverageAge = average;

                demoPost.Add(demp);
            }

            #endregion

            #region 创建工作簿标头字段

            var names = selectPost.Select(m => m.Name).ToList();

            for (var i = 0; i < names.Count(); i++)
            {
                sheet1Title.CreateCell(i).SetCellValue(names[i]);
            }

            #endregion

            #region 对应工作簿字段插入值

            var index = 1;
            var rowIndex = 1;

            foreach (var item in demoPost)   //因为这里只有两个字段 所以下标写死了   如果是多个  要用for循环 title.CreateCell(下标变量)
            {
                IRow title = sheet1.CreateRow(rowIndex);

                title.CreateCell(0).SetCellValue(item.DemoPost);
                title.CreateCell(1).SetCellValue(item.AverageAge);
                rowIndex++;
                index++;
            }

            sheet1.CreateRow(rowIndex);

            rowIndex++;

            #endregion

            #region 数据写入,返回

            MemoryStream ms = new MemoryStream();

            workbook.Write(ms);
            ms.Flush();
            ms.Position = 0;

            return File(ms, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "部门职务.xls");

            #endregion
        }

前端:
<div style="width:200px;display:inline-block;" class="margin-top20">
            <div v-show="showPull" class="you" style="position:absolute;display:none;">
                <ul class="xztable">
                    <li v-on:click="downLoad1('@Url.Action("DemoPostDownLoad", "ReportCenter")')">部门职务统计表</li>
                </ul>
            </div>
        </div>

   //方法2    后台返回键值对格式,前端转为excel下载的json格式进行下载(有js工具)
        [WebMethod]
        [HttpPost]
        public static List<Dictionary<string, string>> CapitalFlowDownLoad(int Time, int Model_id)
        {
            var dataTable = new DataTable();

            var keyList = new List<Dictionary<string, string>>();

            try
            {

                //excel表头
                string[] Chinesname = {"公司编号","年初总经费","市场调研费","正常招聘费","紧急招聘费","市场认证费",
                                     "市场开拓费","产品研发费","批发店建设费","零售店建设费","电子商务平台建设费","原材料采购费",
                                     "原材料运输费","产品生产费用","产品运输费","调货费","订货会进场费","实体零售推广额",
                                     "电子商务零售推广额","批发运输配送费","批发订单违约金","电子商务物流配送费","销售收入(+)","售后服务费",
                                     "清仓收入(+)","产品退换货损失","维护费","裁撤费","员工薪酬","辞退费","管理费","企业所得税",
                                    "年末总经费支出合计","年末剩余总经费"};

                #region 获取资金流/学生数据

                string CapitalFlowsql = string.Format("select * from CapitalFlow(nolock) where Time=" + Time + " and Model_id=" + Model_id + "");
                var CapitalFlowList = db.Fetch<Model.CapitalFlow>(CapitalFlowsql);

                string Studentsql = string.Format("select * from Student(nolock) where ModelInfo_id=" + Model_id);
                var StudentList = db.Fetch<Model.Student>(Studentsql);

                #endregion

                foreach (var item in Chinesname)
                {
                    dataTable.Columns.Add(item);
                }

                DataRow dr = dataTable.NewRow();

                foreach (var item in StudentList)
                {
                    var Capitalflow = CapitalFlowList.SingleOrDefault(m => m.Stu_id == item.id);
                    if (Capitalflow != null)
                    {
                        dr[0] = item.Name;
                        dr[1] = Capitalflow.Inearly_Price;
                        dr[2] = Capitalflow.Market_Price;
                        dr[3] = Capitalflow.Normal_Price;
                        dr[4] = Capitalflow.Emergency_Price;
                        dr[5] = Capitalflow.ISO_Price;
                        dr[6] = Capitalflow.MarketDevelopment;
                        dr[7] = Capitalflow.ProductDevelopment;
                        dr[8] = Capitalflow.SiteProperty;
                        dr[9] = Capitalflow.Retail_Price;
                        dr[10] = Capitalflow.B2c_Price;
                        dr[11] = Capitalflow.RPurchasing;
                        dr[12] = Capitalflow.RTransportation;
                        dr[13] = Capitalflow.Pproduce;
                        dr[14] = Capitalflow.Ptransportation;
                        dr[15] = Capitalflow.PTransferCargo;
                        dr[16] = Capitalflow.Approach_Price;
                        dr[17] = Capitalflow.RetailPromotion;
                        dr[18] = Capitalflow.B2cPromotion;
                        dr[19] = Capitalflow.WTransportation;
                        dr[20] = Capitalflow.WBreachContract;
                        dr[21] = Capitalflow.B2cDelivery;
                        dr[22] = Capitalflow.SalesRevenue;
                        dr[23] = Capitalflow.Service_Price;
                        dr[24] = Capitalflow.ClearanceIncome;
                        dr[25] = Capitalflow.RMA_Price;
                        dr[26] = Capitalflow.Maintenance;
                        dr[27] = Capitalflow.Abolition;
                        dr[28] = Capitalflow.Salary;
                        dr[29] = Capitalflow.Dismissed;
                        dr[30] = Capitalflow.ManagementFee;
                        dr[31] = Capitalflow.IncomeTax;
                        dr[32] = Capitalflow.End_Price;
                        dr[33] = Capitalflow.EndSurplus;

                        dataTable.Rows.Add(dr);
                    }
                }

                keyList = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(JsonConvert.SerializeObject(dataTable));
            }
            catch (Exception e)
            {
                var error = e.Message;   
            }

            return keyList;
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值