• 导出数据到Excel表格


    下面是我们来学习的导出数据到Excel表格的总结
    首先在视图层写导出数据的点击事件
    function 自定义点击事件名()
    {
    //然后这里获取当前表格数据的筛选条件
    var 自定义下拉框名 = $("#下拉框id “).val();
    //后面根据你的条件数依次写
    ……
    var 自定义文本框名 = $(”#文本框id ").val();

    //然后这里写判断它是否为空
    if (自定义下拉框名 == "" || 自定义下拉框名 == undefined) {
    ID = 0;
    }
    //这里也是根据上面的依次在后面写
    ……
    if (自定义文本框名 == undefined) {
    自定义文本框名 = "";
    }
    //这里再接着输出一下,询问用户是否导出,如果是就输出后面的function回调函数,layer是调用的layui插件的弹出层
    layer.confirm("询问语句", { icon: 3, title: "提示" }, function (layerIndex) {
    layer.close(layerIndex);
    //根据上面的筛选条件在后面依次写参数
    window.open("控制器写的自定义导出方法名?根据上面的筛选条件依次写的参数);
    });
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //然后再到控制器写方法
    //后面的括号写写前面条件筛选的参数的条数
    public ActionResult 自定义导出方法名(int id参数, ……string 文本框参数)
    {
    //然后这里紧接着写查询数据
    List<自定义类的类名> 自定义列表名A = (from 自定义的表名1 in Model对象.连接的表1
    join 自定义的表名 in Model对象.连接的表2 on 连接的表1.(连接的条件,对应ID值) equals 连接的表2.(连接的条件,对应ID值)
    连接的表3 on 连接的表2.(连接的条件,对应ID值) equals 连接的表3.(连接的条件,对应ID值) (主外键相连)
    orderby tbEmployee.EmployeeID descending(排序)
    select new 自定义类的类名 {
    类的属性1 = 自定义的表名.字段1,
    类的属性2 = 自定义的表名.字段2,
    类的属性3 = 自定义的表名.字段3,
    ……
    }).Single();查询单条数据,当没有数据或者有多条数据时会触发异常
    .ToList();查询多条数据并转为List
    .Count();查询有多少条数据
    //然后这里写条件筛选 Lambda表达式 运算符=>,左边是参数(如果有),右边是表达式或者语句
    if (参数> 0)
    {
    自定义列表名A = 自定义列表名A.Where(m => m.对应id ==对应id).ToList();
    }
    if (参数2> 0)
    {
    自定义列表名A = 自定义列表名A.Where(m => m.对应id ==对应id).ToList();
    }
    if (!string.IsNullOrEmpty(文本框))
    {
    自定义列表名A = 自定义列表名A.Where(m => m.文本框里面写的数据.Contains(文本框id) || m.文本框里写的数据.Contains(文本框id)).ToList();
    }
    //然后这里接着写创建Excel工作簿
    HSSFWorkbook 自定义工作簿名 = new HSSFWorkbook();
    //然后这里再接着创建工作表,这里的NPOI是插件,NPOI就是在你没有安装office的时候可以读取Excel和word文档。创建表用ISheet,Sheet就是创建工作表的名字
    NPOI.SS.UserModel.ISheet 自定义工作表名 = 自定义工作簿名.CreateSheet(“工作表的名字”);
    //然后再接着创建表头行,创建行用IRow,0就表示第一行
    NPOI.SS.UserModel.IRow 自定义表头行名A = 自定义工作表名.CreateRow(0);
    //再接着设置表头,CreateCell是索引,SetCellValue设置表头行的值,需要多少就创建多少
    自定义表头行名A.CreateCell(0).SetCellValue(“表头名字”);
    自定义表头行名A.CreateCell(1).SetCellValue(“表头名字”);
    自定义表头行名A.CreateCell(2).SetCellValue(“表头名字”);
    ……
    //然后再接着for循环把数据一条一条的写到Excel表格
    for (int i = 0; i < 上面的自定义列表名A.Count(); i++)
    {
    //创建行,这里的自定义行名不要和上面的重复
    NPOI.SS.UserModel.IRow 自定义行名B = 自定义工作表名.CreateRow(i + 1);
    //然后添加数据,这里的数据根据表头的数据名依次写
    自定义行名B.CreateCell(0).SetCellValue(自定义列表名A [i].对应数据名);
    自定义行名B.CreateCell(1).SetCellValue(自定义列表名A [i].对应数据名);
    自定义行名B.CreateCell(2).SetCellValue(自定义列表名A [i].对应数据名);
    自定义行名B.CreateCell(3).SetCellValue(自定义列表名A [i].对应数据名);
    ……
    }
    //然后再接着为Excel文件命名,DateTime再文件名后加上时间,yyyy-MM-dd-HH-mm-ss-ffff表示年月日时分秒毫秒,如下图为导出后的文件名,考生信息就是文件名,后面的数字是导出的时间.xls是后缀

    string 自定义文件名 = “文件名” + DateTime.Now.ToString(“yyyy-MM-dd-HH-mm-ss-ffff”) + “文件后缀”;
    //这里是创建一个内存流来保存二进制数组 MemoryStream 自定义内存流名 = new MemoryStream(http://www.my516.com);
    //这里将Excel文件写入内存流
    自定义工作簿名.Write(自定义内存流名);
    //输出之前调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置
    //Seek(0,Seek.begin) 第一个参数表示相对位置,第二个参数表示参照位置
    ExcelStream.Seek(0, SeekOrigin.Begin);
    //然后返回到页面MIME文件类型(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型
    return File(自定义内存流名, “application/vnd.ms-excel”, 自定义文件名);
    }
    最后到这里导出数据到Excel表格就完成了。
    ---------------------

  • 相关阅读:
    QTreeWidgetItem清空子节点
    qt no doubments matching "ui..h" could be found
    Qt 调试信息、打印信息、输出到文本
    QLayout及其子类 清除添加的widget
    同一个电脑安装两个jdk版本
    hive javaapi 002
    ActiveMQ之spring集成消息转换器MessageConverter
    install Maven
    install apache-activemq
    MySQL 5.7.9版本sql_mode=only_full_group_by问题
  • 原文地址:https://www.cnblogs.com/ly570/p/11058165.html
Copyright © 2020-2023  润新知