说明:开发环境 vs2012 asp.net mvc4 c#

注意:Excel模板有多个sheet页,导出Excel的时候,同时给多个sheet页填充数据

1、项目结构

3、Excel模板(注意sheet页的名称)

4、HTML代码(导出按钮)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EasyuiCombotree.aspx.cs" Inherits="MvcAppTest.EasyuiCombotree" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>按模板导出Excel数据</title> <script type="text/javascript"> function ExportExcel()
{
window.location.href = "Home/ExportExcel3";
}
</script>
</head>
<body>
<div>
<input type="button" value="导出Excel" style="width:120px;" onclick="ExportExcel()" />
</div>
</body>
</html>

5、Home控制器代码

public void ExportExcel3()
{
string path = Server.MapPath("~/loaclData/Excel/Student.xlsx");
List<Room> myList = new List<Room>() {
new Room(){ ID=, Name="班级1", Num=},
new Room(){ ID=, Name="班级2", Num=},
new Room(){ ID=, Name="班级3", Num=},
new Room(){ ID=, Name="班级4", Num=},
new Room(){ ID=, Name="班级5", Num=}
};
var list01 = new List<object>() {
new { ID=, Name="班级1", Num=},
new { ID=, Name="班级2", Num=},
new { ID=, Name="班级3", Num=},
new { ID=, Name="班级4", Num=},
new { ID=, Name="班级5", Num=}}; List<Company> comList = new List<Company>() {
new Company(){ PID=, ADDRICE="地块位置1", NAME="企业1", Price="pr1"},
new Company(){ PID=, ADDRICE="地块位置2", NAME="企业2",Price="pr2"},
new Company(){ PID=, ADDRICE="地块位置3", NAME="企业3",Price="pr3"},
new Company(){ PID=, ADDRICE="地块位置4", NAME="企业4",Price="pr4"},
new Company(){ PID=, ADDRICE="地块位置5", NAME="企业5",Price="pr5"},
new Company(){ PID=, ADDRICE="地块位置6", NAME="企业6",Price="pr6"}
};
DataTable CompanyDt = ListToDataTable(comList);
CompanyDt.TableName = "Company";
DataTable ClassRoom = ListToDataTable(list01);
ClassRoom.TableName = "Room";
List<DataU> DataUModel = new List<DataU>() {
new DataU(){ dtModel=CompanyDt, shName="批而未供"},
new DataU(){ dtModel=ClassRoom, shName="Sheet1"}
};
DataTableExportIsExcelList(DataUModel, "/loaclData/Excel/Student.xlsx", "sheet1", "测试1");
}
  public class Room
{
public Int32 ID { get; set; }
public string Name { get; set; }
public Int32 Num { get; set; }
}
    public class Company {
public Int32 PID { get; set; }
public string NAME { get; set; }
public string ADDRICE { get; set; }
public string Price { get; set; }
}
  public class DataU
{
public DataTable dtModel { get; set; }
public string shName { get; set; }
}
     /// <summary>
/// 讲list集合转换成datatable
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
public static System.Data.DataTable ListToDataTable(IList list)
{
System.Data.DataTable result = new System.Data.DataTable();
if (list.Count > )
{
PropertyInfo[] propertys = list[].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
//获取类型
Type colType = pi.PropertyType;
//当类型为Nullable<>时
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[];
}
result.Columns.Add(pi.Name, colType);
}
for (int i = ; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
  public void DataTableExportIsExcelList(List<DataU> model, string templateFileName, string sheetName, string fileNameHead)
{ MemoryStream ms = OutModelFileToStreamList(model, templateFileName, sheetName);
byte[] bt = ms.ToArray(); string fileName = fileNameHead + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; //客户端保存的文件名
//以字符流的形式下载文件
HttpContext.Response.ContentType = "application/vnd.ms-excel";
// //通知浏览器下载文件而不是打开 HttpContext.Response.AddHeader("Content-Disposition",
"attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
HttpContext.Response.Charset = "UTF-8";
HttpContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
HttpContext.Response.BinaryWrite(bt);
HttpContext.Response.Flush();
HttpContext.Response.End();
Response.ContentType = "application/vnd.ms-excel";
}

按模板导出Excel的更多相关文章

  1. aspose.cells根据模板导出excel

    又隔十多天没写博客了,最近都在忙项目的事情,公司人事变动也比较大,手头上就又多了一个项目.最近做用aspose.cells根据模板导出excel报价单的功能,顺便把相关的核心记下来,先上模板和导出的效 ...

  2. POI通过模板导出EXCEL文件

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

  3. .Net NPOI 根据excel模板导出excel、直接生成excel

    一.根据Excel模板导出excel 1.导入NPOI.dll  2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...

  4. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  5. apache poi根据模板导出excel

    需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...

  6. Java无模板导出Excel,Apache-POI插件实现

    开发环境 jdk 1.8 Maven 3.6 Tomcat 8.5 SpringBoot 2.1.4.RELEASE Apache-POI 3.6 Idea 注意: 我是在现有的基于SpringBoo ...

  7. NPOI复制模板导出Excel

    本人菜鸟实习生一枚,公司给我安排了一个excel导出功能.要求如下:1.导出excel文件有样式要求:2.导出excel包含一个或多个工作表:3.功能做活(我的理解就是excel样式以后可能会变方便维 ...

  8. poi根据excel模板导出Excel

    /****单元格值对象**/public class Cells { /*** * 行 */ private int row; /** * 列 */ private int column; /** * ...

  9. WeihanLi.Npoi 根据模板导出Excel

    WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据 ...

随机推荐

  1. bjtu 1846. Infinity的装备[状压dp+dfs/bfs]

    https://citel.bjtu.edu.cn/acm/oj/problem/1846 1846. Infinity的装备 时间限制 1000 ms 内存限制 64 MB 题目描述 “测试服终于下 ...

  2. 洛谷 P2089 烤鸡【DFS递归/10重枚举】

    [链接]:https://www.luogu.org/problemnew/show/P2089 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢? ...

  3. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  4. 【hibernate】hibernate不同版本的命名策略

    ===================================================hibernate 4命名策略如下================================ ...

  5. 灰度发布+A/B测试

    一起需要提的还有灰度发布. 在方法论上都属于试错法. A/B测试就是上两个方案,部署后看效果.根据效果和一些结果参数决定采用哪个方案.灰度发布是切一部分业务使用新方案,看效果如何,是否有bug,会遇到 ...

  6. Flutter接入极光推送

    (1)搜索 https://pub.dartlang.org/packages/jpush_flutter ,安装插件,并且按照官方配置 /android/app/build.gradle andro ...

  7. [资料分享]GIS+=地理信息+云计算+大数据+容器+物联网+...论文、会议、讲座资料分享

    分享地址 http://pan.baidu.com/s/1gesDSB5 部分内容截图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5 ...

  8. 【前端阅读】——《编程之魂》摘记&读后感&思维导图

    前言:这本书全名叫<编程之魂——与27为编程语言创始人对话>,它的内容以采访对话为主,以图通过和顶级大师的真实交流来调查:大师们为什么要创建某种编程语言,它的技术如何开发.如何教授和学习, ...

  9. mongodb文档的CRUD

    本章会介绍对数据库移入或者移出数据的基本操作 向集合添加文档 从集合删除文档 更新现有的文档 为这些操作选择合适的安全级别 添加删除数据库 添加数据库 :use foo  如果存在foo 就use   ...

  10. win下配置java环境变量

    系统变量→新建 JAVA_HOME 变量 . 变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0)  系统变量→寻找 Path 变量→编辑 在变量值最后输入 %JAVA_HOME%\ ...