zoukankan      html  css  js  c++  java
  • c#导出Excel

    1、方法一:后台为主要操作

    后台方法

    using NPOI.SS.UserModel;
    using NPOI.HSSF.UserModel;
    public string ExportList(Report entity)
    {
        // 获取导出数据
        List<ReportQtyCity> list = ComplaintBusiness.GetComplaintQtyCityExportList(entity);
     
        if (list.Count == 0)
            return "NoData";
     
        var i = 0;
     
        //模板路径
        string templetFileName = HttpContext.Current.Server.MapPath("~/Templete/模板.xls");
        //保存路径
        string reportFileName = HttpContext.Current.Server.MapPath("~/Download/Export/" + DateTime.Now.ToString("统计导出报表 yyyyMMddHHmmss") + ".xls");
        //读取模板
        FileInfo fileInfo = new FileInfo(templetFileName);
        //如果模板存在,打开并读取
        if (fileInfo.Exists)
            fileInfo.CopyTo(reportFileName, true);
        else
            return "NoTemplete";
     
        FileStream file = new FileStream(reportFileName, FileMode.Open, FileAccess.Read);
     
        IWorkbook work = new HSSFWorkbook(file); //读取模板文件
        string sheetName = "明细";
        work.SetSheetName(0, sheetName);
        ISheet sheet = work.GetSheet(sheetName);
        IRow row = null;
        var j = 2;
     
        //创建并设置列表格线样式
        ICellStyle style = work.CreateCellStyle();
        style.BorderBottom = BorderStyle.Thin;
        style.BorderLeft = BorderStyle.Thin;
        style.BorderRight = BorderStyle.Thin;
        style.BorderTop = BorderStyle.Thin;
     
        //循环数据
        foreach (var item in list)
        {
            //从第三行创建行
            row = sheet.CreateRow(j);
            j++;
            i++;
     
            // 创建列,赋值
            // 序号
            ICell cell0 = row.CreateCell(0);
            cell0.CellStyle = style;
            cell0.SetCellValue(i);
            // 开始时间
            ICell cell1 = row.CreateCell(1);
            cell1.CellStyle = style;
            if (item.DateStart != null)
            {
                cell1.SetCellValue(entity.DateStart.GetValueOrDefault().ToString("yyyy-MM-dd"));
            }
            // 结束时间
            ICell cell2 = row.CreateCell(2);
            cell2.CellStyle = style;
            if (item.DateEnd != null)
            {
                cell2.SetCellValue(item.DateEnd.GetValueOrDefault().ToString("yyyy-MM-dd"));
            }
            
            ICell cell3 = row.CreateCell(3);
            cell3.CellStyle = style;
            if (!string.IsNullOrEmpty(item.City))
            {
                cell3.SetCellValue(item.City);
            }
            
            ICell cell4 = row.CreateCell(4);
            cell4.CellStyle = style;
            if (!string.IsNullOrEmpty(item.CompanyName))
            {
                cell4.SetCellValue(item.CompanyName);
            }
            
            ICell cell5 = row.CreateCell(5);
            cell5.CellStyle = style;
            if (!string.IsNullOrEmpty(item.ParkName))
            {
                cell5.SetCellValue(item.ParkName);
            }
        }
     
        using (FileStream filess = System.IO.File.OpenWrite(reportFileName))
        {
            work.Write(filess);
        }
     
        FileInfo filet = new FileInfo(reportFileName);
        var msg = filet.FullName;
        msg = "/Download/Export/" + msg.Substring(msg.LastIndexOf("\") + 1);
        work.Close();
        Dispose();
        return msg;
    }
    前台处理:
    // 数据筛选条件
    var actionParam = GetActionParam();
    $.InvokeAjaxV3({
        async: false,
        url: "Api/V3/Report/Export",
        data: actionParam,
        callBack: function (data) {
            var jsonResult = $.StrToJson(data).Results;
     
            if (data == "NoData") {
                $.messager.alert("导出提示", "暂无数据,请重新选择查询条件");
            } else if (data == "NoTemplete") {
                $.messager.alert("导出提示", "找不到模板,无法导出");
            } else
                location.href = HttpWcf + jsonResult;
        }
    });
    2、方法二:前台为主要操作
    <a href="javascript:void(0)" id="toexcel" class="btn btn-primary btn-sm "> <i class="fa  fa-file-excel-o"></i> 导出到EXCEL</a>
    
    <table id="tableExcel" style="display: none">
        <thead class="text-nowrap">
     
        </thead>
        <tfoot></tfoot>
    </table>
    $("#toexcel").on('click', function () {
        $.InvokeAjaxV3({
            url: "Api/V3/Statistic/Export",
            data: {
                
            },
            async: false,
            callBack: function (data) {
                var obj = $.StrToJson(data).Results;
                var html = '' +
                    '<tr>' +
                    '<th >企业名称</th>' +                
                    '</tr>';
                var allHouseArea = 0, allEmployeeCount = 0, allSatisfiedRate = 0;
                for (var o in obj) {
                    if (obj.hasOwnProperty(o)) {
                        html += '<tr>' +
                            '<td >' + obj[o].CompanyName + '</td>' +
                            '</tr>';
                    }
                }
                $("#tableExcel").html(html);
                FunTableToExcel('tableExcel');
     
            }
        });
    var idTmr;
    function getExplorer() {
        var explorer = window.navigator.userAgent;
        //ie  
        if (explorer.indexOf("MSIE") >= 0) {
            return 'ie';
        }
            //firefox  
        else if (explorer.indexOf("Firefox") >= 0) {
            return 'Firefox';
        }
            //Chrome  
        else if (explorer.indexOf("Chrome") >= 0) {
            return 'Chrome';
        }
            //Opera  
        else if (explorer.indexOf("Opera") >= 0) {
            return 'Opera';
        }
            //Safari  
        else if (explorer.indexOf("Safari") >= 0) {
            return 'Safari';
        }
    }
    function FunTableToExcel(tableid) {
        if (getExplorer() == 'ie') {
            var curTbl = document.getElementById(tableid);
            var oXL = new ActiveXObject("Excel.Application");
            var oWB = oXL.Workbooks.Add();
            var xlsheet = oWB.Worksheets(1);
            var sel = document.body.createTextRange();
            sel.moveToElementText(curTbl);
            sel.select();
            sel.execCommand("Copy");
            xlsheet.Paste();
            oXL.Visible = true;
     
            try {
                var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
            } catch (e) {
                print("Nested catch caught " + e);
            } finally {
                oWB.SaveAs(fname);
                oWB.Close(savechanges = false);
                oXL.Quit();
                oXL = null;
                idTmr = window.setInterval("Cleanup();", 1);
            }
     
        }
        else {
            tableToExcel(tableid);
        }
    }
    function Cleanup() {
        window.clearInterval(idTmr);
        CollectGarbage();
    }
    var tableToExcel = (function () {
        var uri = 'data:application/vnd.ms-excel;base64,',
                template = '<html><head><meta charset="UTF-8"></head><body><table border="1px">{table}</table></body></html>',
                base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) },
                format = function (s, c) {
                    return s.replace(/{(w+)}/g,
                            function (m, p) { return c[p]; });
                }
        return function (table, name) {
            if (!table.nodeType) table = document.getElementById(table);
            var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
            window.location.href = uri + base64(format(template, ctx));
        }
    })();
    再三须慎意,第一莫欺心
  • 相关阅读:
    Bootstrap导航条
    Bootstrap导航
    Bootstrap输入框组
    Bootstrap按钮式下拉菜单
    Bootstrap按钮组
    Bootstrap下拉菜单
    Bootstrap辅助类
    Bootstrap栅格系统
    Bootstrap学习目录
    Bootstrap图标
  • 原文地址:https://www.cnblogs.com/otsf/p/10266321.html
Copyright © 2011-2022 走看看