MVC的导出

MVC  的导出
//前台 传入的查询条件 function DaochuExcel() {
        var filite = daochuFilter();
        var url = "/Sku/DaochuExcel";
        url += "?page=1";
        url += "&rows=10000";
        url += "&sidx=create_date";
        url += "&sord=asc";
        url += "&filters=" + JSON.stringify(filite);
        window.location = url;
    }

后台代码

public void DaochuExcel(long page, long rows, string sidx, string sord, string filters = null)
        {
            ResultObject res = new ResultObject();

            SqlFilter filt = null;
            if (!string.IsNullOrEmpty(filters) && !string.Equals(filters, "null", StringComparison.OrdinalIgnoreCase))
            {
                JavaScriptSerializer j = new JavaScriptSerializer();
                filt = j.Deserialize<SqlFilter>(filters);
            }

            List<SqlFilter> f = new List<SqlFilter>();
            f.Add(filt);
            var pageParamer = new PageParamerPlus(page, rows, sidx, sord, f);
            PageList<Trades> list = Trades.GetPageList(userInfo, pageParamer);//查询出 数据

             var dt = ListToDataTable(list.rows);

var data = new List<List<string>>();
             // 选择字段
             data.Add(new List<string>() { "主订单号", "客户名称", "制单日期"});
             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 data.Add(new List<string>()
                             {
                                 dt.Rows[i]["Tid"].ToString(),
                                 dt.Rows[i]["Customer_Name"].ToString(),
                                 dt.Rows[i]["Create_Date"].ToString(),
                             });
             }
             var workbook = new HSSFWorkbook();
             var outputStream = Response.OutputStream;
             var sheet = workbook.CreateSheet("info");
             var headRow = sheet.CreateRow(0);
             for (int i = 0; i < data[0].Count; i++)
             {
                 headRow.CreateCell(i).SetCellValue(data[0][i]);
             }
             for (int i = 1; i < data.Count; i++)
             {
                 var dataRow = sheet.CreateRow(i);
                 for (int j = 0; j < data[i].Count; j++)
                 {
                     dataRow.CreateCell(j).SetCellValue(data[i][j]);
                 }
             }
             Response.Clear();
             workbook.Write(outputStream);
             Response.Buffer = true;
             Response.AppendHeader("Content-Disposition", "attachment;filename=export.xls");
             Response.ContentEncoding = Encoding.UTF8;
             Response.ContentType = "applicationnd.ms-excel";
             Response.Flush();
        }

将泛类型集合List类转换成DataTable

#region 将泛类型集合List类转换成DataTable
        /// <summary>
        /// 将泛类型集合List类转换成DataTable
        /// </summary>
        /// <typeparam name="T"> </typeparam>
        /// <param name="entitys">泛类型集合</param>
        /// <returns></returns>
        public static DataTable ListToDataTable<T>(List<T> entitys)
        {
            //检查实体集合不能为空
            if (entitys == null || entitys.Count < 1)
            {
                throw new Exception("需转换的集合为空");
            }
            //取出第一个实体的所有Propertie
            Type entityType = entitys[0].GetType();
            PropertyInfo[] entityProperties = entityType.GetProperties();

            //生成DataTable的structure
            //生产代码中,应将生成的DataTable结构Cache起来,此处略
            DataTable dt = new DataTable();
            for (int i = 0; i < entityProperties.Length; i++)
            {
                //dt.Columns.Add(entityProperties[i].Name, entityProperties[i].PropertyType);
                dt.Columns.Add(entityProperties[i].Name);
            }
            //将所有entity添加到DataTable中
            foreach (object entity in entitys)
            {
                //检查所有的的实体都为同一类型
                if (entity.GetType() != entityType)
                {
                    throw new Exception("要转换的集合元素类型不一致");
                }
                object[] entityValues = new object[entityProperties.Length];
                for (int i = 0; i < entityProperties.Length; i++)
                {
                    entityValues[i] = entityProperties[i].GetValue(entity, null);
                }
                dt.Rows.Add(entityValues);
            }
            return dt;
        }
        #endregion

把json转化成list

public static List<T> JSONStringToList<T>(string JsonStr)
        {

            JavaScriptSerializer Serializer = new JavaScriptSerializer();

            List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);

            return objs;

        }
时间: 2024-12-18 18:54:55

MVC的导出的相关文章

.Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法)

.Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构) public class ExcelController : Controller { // // GET: /Excel/ Models.zbwxglEntities myMdl = new Models.zbwxglEntities(); /// <summary> /// 第一种方法,利用文件输出流进行读写操作 /// <

asp.net Mvc Npoi 导出导入 excel

因近期项目遇到所以记录一下: 首先导出Excel : 首先引用NPOI包 http://pan.baidu.com/s/1i3Fosux (Action一定要用FileResult) /// <summary> /// 批量导出本校第一批派位学生 /// </summary> /// <returns></returns> public FileResult ExportStu2() { string schoolname = "401"

MVC AJAX导出Excel通用类

通用类: public enum DataTypeEnum { Int = 0, Float = 1, Double = 2, String = 3, DateTime = 4, Date = 5 } public class ExportFieldInfo { /// <summary> /// 字段名,用于反射获取值 /// </summary> public string FieldName { get; set; } /// <summary> /// 中文名,

mvc 导入,导出excel

最近主要做导入excel 在网上查询了代码 public FileResult DownLoadExcelJiZuChaXunGenRenXiaoFeiJiLu() { DataTable dt = (DataTable)Session["datatable"];//获取需要导出的datatable数据 //创建Excel文件的对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(

Mvc导入导出Excel

在项目中添加对NPOI的引用 视图部分如下: @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> @Html.ActionLink("导出用户", "ExportExcel") <br /> @using (@Html.BeginForm("ImportExce

MVC批量导出数据方法

近段时间做了个数据平台,其中涉及到批量导出CSV格式数据的业务,主要使用了部分视图和视图之间传值等知识点,今天做了下整理,特此分享下: 主要分为四步: 1:要打印的数据格式陈列View: 2:自定义导出表头View呈现,在通过 @{Html.RenderAction(string actionName,object routeValues);}将步骤1的数据整合进来: 3:导出页面调用通用的导出方法,通过传参数,传视图名,获取到要导出的数据: 4:导出成指定格式数据. 下面开始说明详细导出流程,

MVC浏览器导出Excel文件(NPOI)

一.首先引用NPOI的.dll .dll下载地址:链接:https://pan.baidu.com/s/1K4cCb4qpkIfDoH1fZnNvVQ 密码:i9sl 里面有一个ExcelHelper帮助类,复制到项目中,给该帮助类中的方法传参即可完成导出 二.在View中:按钮直接跳转到该哪个控制器中的方法(注意该方法的返回值类型为FileResult) 三.在控制器方法中代码如下: public FileResult DropFile() { string sheetName = "工作簿1

MVC FileResult 导出/下载 文件/Excel

参考http://www.cnblogs.com/ldp615/archive/2010/09/17/asp-net-mvc-file-result.html

在ASP MVC中如何使用Angular5导出excel文件

话不多说,直接来实际的. import { Injectable } from '@angular/core';import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';import { Observable } from 'rxjs';@Injectable() 首先引用基础组件. url: string; constructor(private http: HttpClient) { } 声明api路