ASP.NET MVC5+EF6+EasyUI 后台管理系统(88)-Excel导入和导出-自定义表模导出
前言
之前说了导入和导出,也提供了自定义的表模的导入,可见LinqToExcel可以做的事情不仅仅如此
这次我们来演示比较复杂的导出Excel,导出复杂的Excel与导入复杂的Excel原理基本是一样的!
所以本节来演示如何使用ClosedXML来导入复杂的Excel
一起来看一个例子

注:信息量偏少,但是原理是一样的,你再复杂的Excel表都只是那几个操作方式。
分析
从图中可以看出有几个知识点:
- 1.创建作业本
- 2.添加工作簿(信息表,可以同时导出多个sheet)
- 3.添加标题(合并列)
- 4.填充数据(制定填充或者列表填充,列表填充参考简单导出一节)
- 5.格式化数据(格式化销售额为美元)
- 6.计算平均值(销售额平均值)
看起来很困难,但是ClosedXML都帮我们做好了,具体如下:
- 1.对指定单元格进行和并
- 2.格式化化数据(可以格式化日期,数字,自定义格式应有尽有,非常方便)
- 3.计算(可以对范围的值进行求和,求平均,求条数,求最大小值等等,异常方便)
- 4.设置Excel的各种样式(边框,单元格颜色,宽度等等)
说到底:ClosedXML能输出你任何想定制的格式给客户《客户看了都说好》
实现方式
1.创建作业本
var wb = new XLWorkbook();
2.添加工作簿(信息表,可以同时导出多个sheet)
var ws = wb.Worksheets.Add("信息表");
3.添加标题
ws.Cell("B2").Value = "联系人信息表";
4.填充数据
//姓名
ws.Cell("B3").Value = "姓名";
ws.Cell("B4").Value = "牛掰掰";
ws.Cell("B5").Value = "很多岁";
ws.Cell("B6").SetValue("光头强"); //另一种值得设置方式
//性别
ws.Cell("C3").Value = "性别";
ws.Cell("C4").Value = "女";
ws.Cell("C5").Value = "男";
ws.Cell("C6").SetValue("未知");
// 年龄
ws.Cell("D3").Value = "年龄";
ws.Cell(;
ws.Cell(;
ws.Cell();
//电话
ws.Cell("E3").Value = "电话";
ws.Cell(";
ws.Cell(";
ws.Cell(");
//金额
ws.Cell("F3").Value = "本季度销售业绩";
ws.Cell(";
ws.Cell(";
ws.Cell(");
5.合并标题的列
var rngTable = ws.Range("B2:F6");
6.格式化数据
var rngNumbers = rngTable.Range("E3:E5"); rngNumbers.Style.NumberFormat.Format = "$ #,##0";
取得销售额一列,并进行格式化,前面加个$的符号和,其他格式,参考官方文档
7.输出表格到Excel的位置
var rngData = ws.Range("B3:F6");
var excelTable = rngData.CreateTable();
注意:这是要输出出到Excel中的位置
8.调整内容的宽度
ws.Columns().AdjustToContents();
9.保存Excel表(或者直接用流的方式输出给用户下载)
wb.SaveAs("ExcelSample.xlsx");
var wb = new XLWorkbook();
var ws = wb.Worksheets.Add("信息表");
ws.Cell("B2").Value = "联系人信息表";
//姓名
ws.Cell("B3").Value = "姓名";
ws.Cell("B4").Value = "牛掰掰";
ws.Cell("B5").Value = "很多岁";
ws.Cell("B6").SetValue("光头强"); //另一种值得设置方式
//性别
ws.Cell("C3").Value = "性别";
ws.Cell("C4").Value = "女";
ws.Cell("C5").Value = "男";
ws.Cell("C6").SetValue("未知");
// 年龄
ws.Cell("D3").Value = "年龄";
ws.Cell(;
ws.Cell(;
ws.Cell();
//电话
ws.Cell("E3").Value = "电话";
ws.Cell(";
ws.Cell(";
ws.Cell(");
//金额
ws.Cell("F3").Value = "本季度销售业绩";
ws.Cell(";
ws.Cell(";
ws.Cell(");
var rngTable = ws.Range("B2:F6");
var rngDates = rngTable.Range("D3:D5");
var rngNumbers = rngTable.Range("E3:E5");
rngNumbers.Style.NumberFormat.Format = "$ #,##0";
rngTable.FirstCell().Style
.Font.SetBold()
.Fill.SetBackgroundColor(XLColor.AppleGreen)
.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
rngTable.FirstRow().Merge();
var rngHeaders = rngTable.Range("A2:E2");
rngHeaders.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
rngHeaders.Style.Font.Bold = true;
rngHeaders.Style.Font.FontColor = XLColor.DarkBlue;
rngHeaders.Style.Fill.BackgroundColor = XLColor.Aqua;
var rngData = ws.Range("B3:F6");
var excelTable = rngData.CreateTable();
excelTable.ShowTotalsRow = true;
excelTable.Field("本季度销售业绩").TotalsRowFunction = XLTotalsRowFunction.Average;
excelTable.Field("电话").TotalsRowLabel = "平均值:";
ws.RangeUsed().Style.Border.OutsideBorder = XLBorderStyleValues.Thick;
ws.FirstColumn().Style.Border.LeftBorder = XLBorderStyleValues.Thick;
ws.LastColumn().Style.Border.RightBorder = XLBorderStyleValues.Thick;
ws.FirstRow().Style.Border.TopBorder = XLBorderStyleValues.Thick;
ws.LastRow().Style.Border.BottomBorder = XLBorderStyleValues.Thick;
完整代码
效果如图:

总结
基本上所有场景都在代码展示,再复杂的导出我们应该都能拼凑出来!有问题我们留言探讨一下
下载代码:动起手来,稳固知识
链接:http://pan.baidu.com/s/1pL30drd 密码:1yrc
---------------------------------------------------
参考代码:https://github.com/closedxml/closedxml
ASP.NET MVC5+EF6+EasyUI 后台管理系统(88)-Excel导入和导出-自定义表模导出的更多相关文章
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单
系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步. 开始之前先说说表的结构. 其实表Flow_Form与Flow_FormContent设计是有一个缺陷的.我总共是设置最 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(转)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 日程管理 http://ww ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 任务调度系统界面 http: ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统-WebApi的用法与调试
1:ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-WebApi与Unity注入 使用Unity是为了使用我们后台的BLL和DAL层 2:ASP.NET MVC5+EF6+Easy ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(51)-系统升级
系统很久没有更新内容了,期待已久的更新在今天发布了,最近花了2个月的时间每天一点点,从原有系统 MVC4+EF5+UNITY2.X+Quartz 2.0+easyui 1.3.4无缝接入 MVC5+E ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(88)-Excel导入和导出-主从表结构导出
前言 前面一篇详细讲解了导入导出,本节演示混合结构的导出功能!同时提供代码下载.. 代码下载 vs2015+无数据库 先看效果图:这个一个混合的Excel,列表与自定义信息的混合! 我们的步骤大概分为 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(58)-DAL层重构
系列目录 前言:这是对本文系统一次重要的革新,很久就想要重构数据访问层了,数据访问层重复代码太多.主要集中增删该查每个模块都有,所以本次是为封装相同接口方法 如果你想了解怎么重构普通的接口DAL层请查 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(34)-文章发布系统①-简要分析
系列目录 最新比较闲,为了学习下Android的开发构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与,虽然有点没有目的的学习,但还是了解了Andro ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控
系列目录 先补充一个平面化登陆页面代码,自己更换喜欢的颜色背景 @using Apps.Common; @{ Layout = null; } <!DOCTYPE html> <ht ...
随机推荐
- Loadrunner检查点使用总结
在使用Loadrunner进行性能测试中,有时需要对性能测试中的功能是否全部正确进行判断.这里就需要用到“检查点”,本文总结了常用三种协议下检查点的使用方法,希望阅读本文后的小伙伴们能够掌握其使用方法 ...
- Java跨域问题的处理详解
1,JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题? 答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策 ...
- C++虚函数(09)
一旦基类定义了虚函数,该基类的派生类中的同名函数也自动称为虚函数. 虚函数只能是类中的一个成员函数,但不能是静态成员,关键字virtual用于类中该函数的声明中. 关键字virtual指示C++编译器 ...
- PHP设计模式四:适配器模式
一.什么是适配器模式 适配器模式有两种:类适配器模式和对象适配器模式.其中类适配器模式使用继承方式,而对象适配器模式使用组合方式.由于类适配器 模式包含双重继承,而PHP并不支持双重继承,所以一般都采 ...
- LeetCode 243. Shortest Word Distance (最短单词距离)$
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- iOS 之 protocol的相关问题
定义一个协议, 一个协议可以扩展子另一个协议 如果需要扩展多个协议中间使用逗号分隔 //定义一个协议 @protocol AnimalDelegate <NSObject, ***> @r ...
- xml文件的方式实现动态代理基于SpringAOP
1.配置spring容器 导入jar包 com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.j ...
- bug:翻页
本章主要分享下,个人测试经历中遇见过的翻页bug 一.列表翻页 1.bug1:去请求翻页page=0,从0页开始算.一般来说page=0 和 page=1的数据是一模一样,所以翻第2页时会发现和第1页 ...
- 使用gitbook
前面的话 gitbook功能强大,可以自动实现搜索及翻页等功能,上手容易,用markdown书写即可,且可以自动生成响应式网站.本文将详细介绍如何使用gitbook 安装 1.使用npm全局安装git ...
- js中判断鼠标滚轮方向的方法
前 言 LiuDaP 最近无聊,在做自己的个人站,其中用到了一个关于鼠标滚轮方向判断的方法,今天闲来无聊,就给大家介绍一下吧!!!! 在介绍鼠标事件案例前,让我们先稍微了解一下js中的event ...