数据导出

孤人 提交于 2019-12-03 07:20:42

JS:

export: function () {
            var checkStatus = table.checkStatus('tb-salary'), //lauui.table
                data = checkStatus.data;
            checkEmployeeSalaryIds = [];
            if (data.length >= 1) {  //导出选中的数据
                for (var i in data) {
                    checkEmployeeSalaryIds.push(data[i].EmployeeSalaryId);
                }
                var url = '/Manager/Salary/ExportcheckSaleryData?checkEmployeeSalaryIds=' + checkEmployeeSalaryIds;
                var xhr = new XMLHttpRequest();
                xhr.open('GET', url, true);//get请求,请求地址,是否异步
                xhr.responseType = "blob";  // 返回类型blob
                xhr.onload = function () {// 请求完成处理函数
                    if (this.status === 200) {
                        var blob = this.response;// 获取返回值
                        console.log(blob);
                        var a = document.createElement('a');
                        a.download = '员工薪资档案表.xls';
                        a.href = window.URL.createObjectURL(blob);
                        a.click();
                    }
                };
                // 发送ajax请求
                xhr.send();

                //window.location = '/Manager/Salary/ExportcheckSaleryData?checkEmployeeSalaryIds=' + checkEmployeeSalaryIds;
            }
            else{
                layer.open({
                    title: "导出",
                    type: 2,
                    area: ['800px', '600px'],
                    content: "/Manager/Salary/SalaryExport",
                    end: function () {
                        //刷新当前页
                        $(".layui-laypage-btn")[0].click();
                    }
                });
            }
        },

  

SalaryExport页面:
<script type="text/javascript">
    $(function () {
        layui.use(['laydate'], function () {
            var laydate = layui.laydate;
            //执行一个laydate实例
            laydate.render({
                elem: '#salaryDateStart',
                type: 'month',
            });
            laydate.render({
                elem: '#salaryDateEnd',
                type: 'month',
            });
        });
        setTimeout(InitCustomers, 1500);
        $("#save").click(function () {
            var salaryDateStart = $("#salaryDateStart").val();
            var salaryDateEnd = $("#salaryDateEnd").val();
            var customerId = $("#customerId").val();
            var childIncluded = $("#childIncluded").get(0).checked == true ? 1 : 0;
            $.ajax({
                type: 'post',
                url: '/Manager/Salary/ExportAllSaleryData?customerId=' + customerId + '&&childIncluded=' + childIncluded + '&&salaryDateStart=' + salaryDateStart + '&&salaryDateEnd=' + salaryDateEnd,
                async: false,
                success: function (data) {
                    var list = eval(data);
                    if (list.length > 0) {

                        var url = '/Manager/Salary/ExportSaleryData?customerId=' + customerId + '&&childIncluded=' + childIncluded + '&&salaryDateStart=' + salaryDateStart + '&&salaryDateEnd=' + salaryDateEnd;
                        var xhr = new XMLHttpRequest();
                        xhr.open('GET', url, true);//get请求,请求地址,是否异步
                        xhr.responseType = "blob";  // 返回类型blob
                        xhr.onload = function () {// 请求完成处理函数
                            if (this.status === 200) {
                                var blob = this.response;// 获取返回值
                                console.log(blob);
                                var a = document.createElement('a');
                                a.download = '员工薪资档案表.xls';
                                a.href = window.URL.createObjectURL(blob);
                                a.click();
                            }
                        };
                        // 发送ajax请求
                        xhr.send();

                        //window.location = '/Manager/Salary/ExportSaleryData?customerId=' + customerId + '&&childIncluded=' + childIncluded + '&&salaryDateStart=' + salaryDateStart + '&&salaryDateEnd=' + salaryDateEnd;
                        }
                    else {
                        var msgs = "该客户暂无" + salaryDateStart + "-" + salaryDateEnd + "月度数据!";
                        layer.msg(msgs, { icon: 5, time: 3000 });
                    }
                }
            })

        });
    });
    function InitCustomers() {
        var options = [{ "valueName": "CustomerId", "textName": "CustomerShort" }];
        layerDialog.bindSelect('/Manager/Customer/GetCustomers?', options, ["customerId"], true);
    }
</script>

  后端c#:

/// <summary>
        /// 导出表格数据
        /// </summary>
        /// <returns></returns>
        public ActionResult SalaryExport()
        {
            return View();
        }
        /// <summary>
        /// 导出选中的数据
        /// </summary>
        /// <param name="checksalaryIds"></param>
        public void ExportcheckSaleryData(string checkEmployeeSalaryIds)
        {
            var salaryIds = checkEmployeeSalaryIds.Split(',').ToList();
            List<SalaryListOutput> SalaryListOutputs = new List<SalaryListOutput>();
            foreach (var EmployeeSalaryId in salaryIds)
            {
                SalaryDetailOutput employeeSalaryInfo = _salaryService.GetEmployeeSalaryInfo(EmployeeSalaryId);

                string totalPayAmount, finalPayAmount, preTaxSalary, incomeTax, totalDeduction;

                var salaryListOutput = new SalaryListOutput()
                {
                    EmployeeName = employeeSalaryInfo.EmployeeSalary.EmployeeName,
                    IDCard = employeeSalaryInfo.EmployeeSalary.IDCard,
                    CustomerShortName = employeeSalaryInfo.EmployeeSalary.CustomerShortName,
                    EmployeeSalaryId = employeeSalaryInfo.EmployeeSalary.EmployeeSalaryId,
                    SetType = employeeSalaryInfo.EmployeeSalary.SetType,
                    SalaryDate = employeeSalaryInfo.EmployeeSalary.SalaryDate,
                    PayTaxDate = employeeSalaryInfo.EmployeeSalary.PayTaxDate,
                };
                totalPayAmount = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("应发薪资"))?.AccountItemValue;
                finalPayAmount = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("实发薪资"))?.AccountItemValue;
                preTaxSalary = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("应税薪资"))?.AccountItemValue;
                incomeTax = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("个税金额"))?.AccountItemValue;
                totalDeduction = employeeSalaryInfo.Items?.FirstOrDefault(s => s.ItemName.Equals("应扣薪资"))?.AccountItemValue;
                if (!string.IsNullOrWhiteSpace(totalPayAmount))
                {
                    salaryListOutput.TotalPayAmount = decimal.Parse(totalPayAmount);
                }
                if (!string.IsNullOrWhiteSpace(finalPayAmount))
                {
                    salaryListOutput.FinalPayAmount = decimal.Parse(finalPayAmount);
                }
                if (!string.IsNullOrWhiteSpace(preTaxSalary))
                {
                    salaryListOutput.PreTaxSalary = decimal.Parse(preTaxSalary);
                }
                if (!string.IsNullOrWhiteSpace(incomeTax))
                {
                    salaryListOutput.IncomeTax = decimal.Parse(incomeTax);
                }
                if (!string.IsNullOrWhiteSpace(totalDeduction))
                {
                    salaryListOutput.TotalDeduction = decimal.Parse(totalDeduction);
                }
                SalaryListOutputs.Add(salaryListOutput);
            }

            string templatePath = AppSetting.EmploySalaryInfoExportTemplate;
            DataTable dt = new DataTable("EmploySalaryInfoExportTable");
            dt.Columns.Add(new DataColumn("CustomerShortName", typeof(string)));//0
            dt.Columns.Add(new DataColumn("EmployeeName", typeof(string)));//1
            dt.Columns.Add(new DataColumn("IDCard", typeof(string)));//2
            dt.Columns.Add(new DataColumn("SalaryDate", typeof(string)));//3
            dt.Columns.Add(new DataColumn("SetType", typeof(string)));//4
            dt.Columns.Add(new DataColumn("TotalPayAmount", typeof(decimal)));//5
            dt.Columns.Add(new DataColumn("IncomeTax ", typeof(decimal)));//6
            dt.Columns.Add(new DataColumn("TotalDeduction", typeof(decimal)));//7
            dt.Columns.Add(new DataColumn("FinalPayAmount", typeof(decimal)));//8
            foreach (SalaryListOutput salaryListOutput in SalaryListOutputs)
            {
                DataRow dr = dt.NewRow();
                dr[0] = salaryListOutput.CustomerShortName;
                dr[1] = salaryListOutput.EmployeeName;
                dr[2] = salaryListOutput.IDCard;
                dr[3] = salaryListOutput.SalaryDate;
                dr[4] = salaryListOutput.SetType;
                dr[5] = salaryListOutput.TotalPayAmount;
                dr[6] = salaryListOutput.IncomeTax;
                dr[7] = salaryListOutput.TotalDeduction;
                dr[8] = salaryListOutput.FinalPayAmount;
                dt.Rows.Add(dr);
            }
            string fileName = string.Format("员工薪资档案表{0}-{1}-{2}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            Util.RenderToBrowser(templatePath, dt, 2, fileName, Response, Request);
        }
        /// <summary>
        /// 直接点击【导出】按钮
        /// </summary>
        public void ExportSaleryData()
        {
            int childIncluded = Convert.ToInt32(Request["childIncluded"]);
            string customerId = string.IsNullOrEmpty(Request["customerId"]) ? "" : Request["customerId"];
            string salaryDateStart = string.IsNullOrEmpty(Request["salaryDateStart"]) ? null : Request["salaryDateStart"];
            string salaryDateEnd = string.IsNullOrEmpty(Request["salaryDateEnd"]) ? null : Request["salaryDateEnd"];//得到js传来的导出选项

            string templatePath = AppSetting.EmploySalaryInfoExportTemplate;
            var salaryDataList = _salaryService.GetExportData(customerId, childIncluded, salaryDateStart, salaryDateEnd);//获取数据


            DataTable dt = new DataTable("EmploySalaryInfoExportTable");
            dt.Columns.Add(new DataColumn("CustomerShortName", typeof(string)));//0
            dt.Columns.Add(new DataColumn("EmployeeName", typeof(string)));//1
            dt.Columns.Add(new DataColumn("IDCard", typeof(string)));//2
            dt.Columns.Add(new DataColumn("SalaryDate", typeof(string)));//3
            dt.Columns.Add(new DataColumn("SetType", typeof(string)));//4
            dt.Columns.Add(new DataColumn("TotalPayAmount", typeof(decimal)));//5
            dt.Columns.Add(new DataColumn("IncomeTax ", typeof(decimal)));//6
            dt.Columns.Add(new DataColumn("TotalDeduction", typeof(decimal)));//7
            dt.Columns.Add(new DataColumn("FinalPayAmount", typeof(decimal)));//8
            foreach (SalaryListOutput salaryListOutput in salaryDataList)
            {
                DataRow dr = dt.NewRow();
                dr[0] = salaryListOutput.CustomerShortName;
                dr[1] = salaryListOutput.EmployeeName;
                dr[2] = salaryListOutput.IDCard;
                dr[3] = salaryListOutput.SalaryDate;
                dr[4] = salaryListOutput.SetType;
                dr[5] = salaryListOutput.TotalPayAmount;
                dr[6] = salaryListOutput.IncomeTax;
                dr[7] = salaryListOutput.TotalDeduction;
                dr[8] = salaryListOutput.FinalPayAmount;
                dt.Rows.Add(dr);
            }
            string fileName = string.Format("员工薪资档案表{0}-{1}-{2}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            Util.RenderToBrowser(templatePath, dt, 2, fileName, Response, Request);
        }

        //返回加载的数据
        public JsonResult ExportAllSaleryData()
        {
            int childIncluded = Convert.ToInt32(Request["childIncluded"]);
            string customerId = string.IsNullOrEmpty(Request["customerId"]) ? "" : Request["customerId"];
            string salaryDateStart = string.IsNullOrEmpty(Request["salaryDateStart"]) ? null : Request["salaryDateStart"];
            string salaryDateEnd = string.IsNullOrEmpty(Request["salaryDateEnd"]) ? null : Request["salaryDateEnd"];//得到js传来的导出选项

            string templatePath = AppSetting.EmploySalaryInfoExportTemplate;
            var salaryDataList =  _salaryService.GetExportData(customerId, childIncluded, salaryDateStart, salaryDateEnd);//获取数据


            DataTable dt = new DataTable("EmploySalaryInfoExportTable");
            dt.Columns.Add(new DataColumn("CustomerShortName", typeof(string)));//0
            dt.Columns.Add(new DataColumn("EmployeeName", typeof(string)));//1
            dt.Columns.Add(new DataColumn("IDCard", typeof(string)));//2
            dt.Columns.Add(new DataColumn("SalaryDate", typeof(string)));//3
            dt.Columns.Add(new DataColumn("SetType", typeof(string)));//4
            dt.Columns.Add(new DataColumn("TotalPayAmount", typeof(decimal)));//5
            dt.Columns.Add(new DataColumn("IncomeTax ", typeof(decimal)));//6
            dt.Columns.Add(new DataColumn("TotalDeduction", typeof(decimal)));//7
            dt.Columns.Add(new DataColumn("FinalPayAmount", typeof(decimal)));//8
            foreach (SalaryListOutput salaryListOutput in salaryDataList)
            {
                DataRow dr = dt.NewRow();
                dr[0] = salaryListOutput.CustomerShortName;
                dr[1] = salaryListOutput.EmployeeName;
                dr[2] = salaryListOutput.IDCard;
                dr[3] = salaryListOutput.SalaryDate;
                dr[4] = salaryListOutput.SetType;
                dr[5] = salaryListOutput.TotalPayAmount;
                dr[6] = salaryListOutput.IncomeTax;
                dr[7] = salaryListOutput.TotalDeduction;
                dr[8] = salaryListOutput.FinalPayAmount;
                dt.Rows.Add(dr);
            }
            //JavaScriptSerializer jss = new JavaScriptSerializer();
            System.Collections.ArrayList dic = new System.Collections.ArrayList();
            foreach (DataRow dr in dt.Rows)
            {
                Dictionary<string, object> drow = new Dictionary<string, object>();
                foreach (DataColumn dc in dt.Columns)
                {
                    drow.Add(dc.ColumnName, dr[dc.ColumnName]);
                }
                dic.Add(drow);
            }
            return Json(JsonConverter.Serialize(dic));
        }

  

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!