利用 NUget包 EPPlus 实现数据导出到Excel(适用于MVC)
aaarticlea/png;base64,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" alt="" width="315" height="43" />
第一步:为项目安装Epplus Nuget包。
Install-Package EPPlus
第二步:在data项目中新建Repository,命名为ExcelWriter.cs.
将以下代码粘入,修改项目引用名字。
using System;
using OfficeOpenXml;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq; namespace ****.Data.Repositories
{
public class ExcelWriter<TEntity> where TEntity :class
{
public void WriteToFileStream(IEnumerable<TEntity> list, out MemoryStream memoryStream)
{
var pack = new ExcelPackage();
var ws = pack.Workbook.Worksheets.Add("预约时间表"); var col = ;
var row = ;
foreach (var propertyInfo in typeof(TEntity).GetProperties())
{
var displayName = propertyInfo.Name;
ws.Cells[row, col].Value = displayName;
col++;
} row++; foreach (var coachBatchPayoutExcelModel in list)
{ for (var i = ; i < col; i++)
{
var colName = ws.Cells[, i].Value.ToString();
ws.Cells[row, i].Value = coachBatchPayoutExcelModel.GetType().GetProperty(colName).GetValue(coachBatchPayoutExcelModel, null);
}
row++;
} foreach (var propertyInfo in typeof(TEntity).GetProperties())
{
var attribute = propertyInfo.GetCustomAttributes(typeof(DisplayNameAttribute), true).Cast<DisplayNameAttribute>().SingleOrDefault();
if (attribute != null)
{
ws.Cells.First(item => item.GetValue<string>() == propertyInfo.Name).Value = attribute.DisplayName;
}
}
ws.Column().Style.Numberformat.Format = "yyyy年MM月dd日";
ws.Column().Width = ;
ws.Column().Width = ;
ws.Column().Width = ;
ws.Column().Width = ;
ws.Column().Width = ;
ws.Column().Width = ;
memoryStream = new MemoryStream(pack.GetAsByteArray());
}
}
}
以上为一泛型,如何使用请参考以下使用样例。
#region 下载数据
Mapper.CreateMap<OnlineBookingInfo, ExcelModel>();
var excels = Mapper.Map<List<OnlineBookingInfo>, List<ExcelModel>>(onlineBookingInfos);
MemoryStream memoryStream;
var excelWriter = new ExcelWriter<ExcelModel>();
excelWriter.WriteToFileStream(excels, out memoryStream);
return File(memoryStream, "application/vnd.ms-excel", "郑州科技馆预约参观名单" + DateTime.Now.Date.ToString("yyyy_MM_dd") + ".xls");
#endregion
先将需要导出的数据使用mapper,映射到新的实体类型(只需要导出的实体,此处的可以为新建)
excel的title为新建实体的dispalyname的名字。
使用的时候先
MemoryStream memoryStream;
var excelWriter = new ExcelWriter<ExcelModel>();
然后
excelWriter.WriteToFileStream(excels, out memoryStream);
最后输出
return File(memoryStream, "application/vnd.ms-excel", "郑州科技馆预约参观名单" + DateTime.Now.Date.ToString("yyyy_MM_dd") + ".xls");
利用 NUget包 EPPlus 实现数据导出到Excel(适用于MVC)的更多相关文章
- 利用 NUget包 EPPlus 实现数据导出到Excel(适用于DTcms)
首先安装EPPlus 包
- Java利用Apache POI将数据库数据导出为excel
将数据库中的数据导出为excel文件,供其他人查看 public class POITest { public static void main(String[] args) { POITest te ...
- 在VB中利用Nuget包使用SQLite数据库和Linq to SQLite
上午解决了在C#中利用Nuget包使用SQLite数据库和Linq to SQLite,但是最后生成的是C#的cs类文件,对于我这熟悉VB而对C#白痴的来说怎么能行呢? 于是下午接着研究,既然生成的是 ...
- 用node.js写一个简单爬虫,并将数据导出为 excel 文件
引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...
- asp.net将数据导出到excel
本次应用datatable导出,若用gridview(假设gridview设为了分页显示)会出现只导出当前页的情况. protected void btnPrn_Click(object sender ...
- 大批量数据导出到Excel的实现
在平时的项目中,将数据导出到Excel的需求是很常见的,在此对一些常见的方法做以总结,并提供一种大数据量导出的实现. OLEDB 使用OLEDB可以很方便导出Excel,思路很简单,处理时将Exc ...
- struts2结合poi-3.7实现数据导出为excel
我们在处理数据的时候,有可能要将数据导出到excel文件中,那么java中是怎么实现的呢?apache开发的poi就可以帮我们实现啦,它也是开源的代码,导入相应的jar包,就可以轻松实现,下面让我们来 ...
- 使用POI把查询到的数据表数据导出到Excel中,一个表一个sheet.最详细!!!
一.需求 我们会遇到开发任务: 经理:小王,你来做一下把数据库里的数据导出到Excel中,一个表是一个sheet,不要一个表一个Excel. 小王:好的,经理.(内心一脸懵逼) 二.前期准备 首先我们 ...
- 学习笔记 DataGridView数据导出为Excel
DataGridView数据导出为Excel 怎样把WinForm下的“DGV”里的绑定数据库后的数据导出到Excel中. 比如:在窗体里有个一“DGV”,DataGridView1,绑定了数据源 ...
随机推荐
- Codeforces Round #307 (Div. 2) C. GukiZ hates Boxes 贪心/二分
C. GukiZ hates Boxes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/551/ ...
- GEOS库 介绍 (转)
http://wiki.woodpecker.org.cn/moin/lilin/geos-introduce 介绍 GEOS是一个集合形状的拓扑关系操作实用库(可能这么说不太准确),简单得说,就是判 ...
- Codeforces Round #264 (Div. 2) C
题目: C. Gargari and Bishops time limit per test 3 seconds memory limit per test 256 megabytes input s ...
- Java Web系统经常使用的第三方接口
1. Web Service 接口 1.1 接口方式说明和长处 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为client去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- 制作简易计算器处理结果Servlet
ResultServlet.java: package com.you.servlet; import java.io.IOException; import java.io.PrintWriter; ...
- C++ SFINAE
1. 什么是SFINAE 在C++中有很多的编程技巧(Trick), SFINAE就是其中一种, 他的全义可以翻译为”匹配失败并不是一个错误(Substitution failure is not a ...
- HDU 4605 Magic Ball Game 树状数组
题目大意很简单. 有一颗树(10^5结点),所有结点要么没有子结点,要么有两个子结点.然后每个结点都有一个重量值,根结点是1 然后有一个球,从结点1开始往子孙结点走. 每碰到一个结点,有三种情况 如果 ...
- Java SimpleDateFormat 函数
一.SimpleDateFormat函数例子: SimpleDateFormat format=new SimpleDateFormat("MM-dd HH:mm:ss E"); ...
- WPF 之 布局(三)
六.DockPanel DockPanel定义一个区域,在此区域中,您可以使子元素通过描点的形式排列,这些对象位于 Children 属性中.停靠面板其实就是在WinForm类似于Dock属性的元 素 ...
- WWH学习模式
WWH是"What+Why+How"的简称,是对学习方法最完美的概括."如果不按照WWH这种模式来教学,90%的结果是老师没教好,学生学不好." 1.What( ...