后台列表导出Excel

小白做的导出功能

js部分:

 function btn_export() {
        dialogConfirm("注:您确定要导出报表吗?", function (r) {
            if (r) {
                Loading(true, "正在导出...");
                window.setTimeout(function () {
                    $.ajax({
                        url: "",
                        type: "post",
                        data: {
                           start_date:$("#start_date").val(),
                           end_date:$("#end_date").val()
                        },
                        dataType: "json",
                        success: function (result) {
                            if (result.code != 200) {
                                dialogMsg(result.msg, 0);
                                Loading(false);
                                return;
                            }
                            Loading(false);
                            dialogMsg(result.msg, 1);
                            window.location = result.path;
                        }
                    });
                }, 1000);
            }
        });

    }

控制器部分:

 public ActionResult ExportExcel(string start_date,string end_date)
        {
            string path = "";
            string result= excelexport.ExcelExport(start_date, end_date,ref path);
            object obj = new
            {
                code = 200,
                path = path,
                msg = "导出成功"
            };
            if (result!= "")
            {
                obj = new
                {
                    code = 400,
                    msg = result,
                };
            }
            return Json(obj, JsonRequestBehavior.AllowGet);
        }

  BLL部分:  引入using System.IO和using NPOI.XSSF.UserModel,在解决方案下添加一个空文件夹derivation 和一个带有标题栏的excel文件的stencil文件夹,excel文件里的标题要跟代码循环部分数据对齐

 public string ExcelExport(string start_date, string end_date,ref string path)
        {
            var bus = new
            {
                all = true,
                start_date,
                end_date
            };
            var res = dbFactory.GetData(0, out dynamic out_dynamic, bus);
            if (res != "") return "无数据";
            try
            {
                string templetFileName = HttpContext.Current.Server.MapPath("~\\stencil\\数据报表.xlsx");
                string name = DateTime.Now.ToString("yyyy-MM-dd") + "数据报表.xlsx";
                path = "/derivation/" + name;

                string reportFileName = HttpContext.Current.Server.MapPath("~\\derivation\\" + name);
                FileStream file = new FileStream(templetFileName, FileMode.Open, FileAccess.Read);
                XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
                var sheet = hssfworkbook.GetSheet("Sheet1");

                var list = out_dynamic.list;
                int index = 0;

                foreach (var item in list)
                {
                    index = list.IndexOf(item) + 1;
                    sheet.CreateRow(index).CreateCell(0);
                    var row = sheet.GetRow(index);
                    row.GetCell(0).SetCellValue(item.id.ToString());
                    row.CreateCell(2);
                    row.GetCell(2).SetCellValue(item.name.ToString());
                    row.CreateCell(3);
                    row.GetCell(3).SetCellValue(item.value.ToString());
                    row.CreateCell(4);
                    row.GetCell(4).SetCellValue(item.price.ToString());
                    row.CreateCell(5);
                    row.GetCell(5).SetCellValue(item.start_addr_name.ToString());
                    row.CreateCell(6);
                    row.GetCell(6).SetCellValue(item.end_addr_name.ToString());
                    row.CreateCell(8);
                    row.GetCell(8).SetCellValue(item.create_date.ToString());
                }
                index++;
                sheet.CreateRow(index).CreateCell(0);
                sheet.GetRow(index).GetCell(0).SetCellValue("总计:" + list.Count + "条");

                using (FileStream filess = File.OpenWrite(reportFileName))
                {
                    hssfworkbook.Write(filess);
                }

                file.Close();
                return "";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

  

原文地址:https://www.cnblogs.com/lemonmoney/p/9394063.html

时间: 2024-10-09 17:36:08

后台列表导出Excel的相关文章

freecms中后台添加导出excel表格功能

导出excel,可以让页面通过js导出,也可以通过后台导出. 通过js导出有各种限制,有些还只能在ie上导(用了activex控件) 最好的办法,是通过Apache POI导出. Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 关于POI导Excel,这里有一个不错的博客 http://blog.csdn.net/ptzrbin/article/details/8751293

ASP.NET后台自定义导出Excel

关于导出,属于老生常谈了,下面就总结下我自己遇到的一些导出吧. 1.使用Excel组件进行导出(需要安装Microsoft Office Excel). 下面为代码,希望可以帮助别人. 1)准备数据源 //首先创建一个DataTable DataTable dtSource = new DataTable(); dtSource.Columns.Add("ID"); dtSource.Columns.Add("Name"); dtSource.Columns.Add

[ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel

继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目录 poi项目下载及加载 extjs前端导出设置 extjs后台对应的解决方案 创建excel工作簿 创建一个excel页签 生成excel样式并初始化 产生表格标题行build headers 构造数据行build rows poi项目下载及加载 POI项目是apache官网的一个开源项目,其主要

采用Post请求的方式提交参数并导出excel

一般情况下,我们都是采用get请求的方式导出excel.例如采用如下方式: var exportUrl = '/xxx;'; window.open(exportUrl); 导出excel所需的逻辑参数拼接到url上即可. 但是,如果我们需要提交大量的参数到后台才能导出excel, 亦或者我们提交的参数中有中文,get提交乱码了,那么就可能想使用post提交的方式来导出excel.因为post提交支持更多的参数,从而能解决get提交对url长度的限制问题. 然而,一般的post提交表单,意味着主

Web导出EXCEL

前台(客户端)导出EXCEL: 单纯的JS能够导出Excel的,一般都需要调用客户端所安装的Office Excel组件(COM接口)来完成这个工作. http://www.stepday.com/topic/?247 后台(服务器)导出EXCEL: 利用Excel的Com接口 利用OELDB http://blog.csdn.net/cpp2017/article/details/2245396 http://blog.csdn.net/cpp2017/article/details/2245

JQuery EasyUI DataGrid列表所见所得随意导出excel

1.抽取DataGrid列表数据 function ExportNormal(strXlsName, exportGrid, postUrl, hiddenColumns) { /// <summary> /// 提交DataGrid数据 /// </summary> var f = $('<form action="' + postUrl + '?ac=normal" method="post" id="fmExport1&

winform导入导出excel,后台动态添加控件

思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(string extension = Path.GetExtension(fileDialog.FileName).ToLower();),并设置允许后缀文件名: 3,NPOI转datetable,遍历tatetable转成实体类列表并入库: 导出: 1, 创建提示用户保存类,SaveFileDial

.net 后台导出excel ,word

前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BTBW_rk.aspx.cs" Inherits="lxl_HXYRK_BTBW_rk" %> <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral,

微信昵称emoji表情,特殊表情导致列表不显示,导出EXCEL报错等问题解决!

最近做的项目,上线后一切正常,过段时间管理员反馈用户导出EXCEL报错,前台获取用户列表不显示,查找问题找到是微信昵称.emoji表情导致报错, emoji表情介绍 由于微信接口中对于emoji表情使用的是UTF-8的二进制字符串,并没有解码,表现就是当收到微信端用户发来的emoji表情时,显示为一个方块型「」或是无法显示的字符,这时就需要对其进行转码. 每个emoji表情其实都有相应的unicode编码,在解析用户向公众号发送的文字中的emoji表情字符时,我们可以根据unicode码来匹配