利用 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,绑定了数据源 ...
随机推荐
- hdu4085 Peach Blossom Spring 斯坦纳树,状态dp
(1)集合中元素表示(1<<i), i从0开始 (2)注意dp[i][ss] = min(dp[i][ss], dp[i][rr | s[i]] + dp[i][(ss ^ rr) | s ...
- uva 387 A Puzzling Problem (回溯)
A Puzzling Problem The goal of this problem is to write a program which will take from 1 to 5 puzz ...
- 读《架构探险——从零开始写Java Web框架》
内容提要 <架构探险--从零开始写Java Web框架>首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA.Maven.Git 等开发工具搭建 Java Web 应用:接着通 ...
- 腾讯微博java(android)sdk新增微博api详细介绍
本文主要介绍腾讯微博android sdk中新增微博有关的8个接口,以及使用的示例代码 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见 ...
- /bin/bash: line 0: fg: no job control一般解决方法
測试版本号:CDH5.0,(Hadoop2.3) 在使用windows调用Hadoop yarn平台的时候,一般都会遇到例如以下的错误: 2014-05-28 17:32:19,761 WARN or ...
- android Unable to instantiate application
最近一段时间在做项目时候遇到一个错误老是解决不了,log如下: FATAL EXCEPTION: main12-11 09:08:53.922 E/AndroidRuntime( 1227): jav ...
- 特殊IP地址
主机ID全为0:不分配给任何主机,仅用于表示某个网络的网络地址. 主机ID全为1:不分配给任何主机,仅用做广播地址. IP地址的32位全为1:即255.255.255.255,为有限广播地址(http ...
- 总结 IOS 7 内存管理
[iOS7的一些总结].iOS中的内存管理 我们知道,为了更加方便地处理内存管理问题,将开发人员从繁琐的内存的分配和释放工作中解放出来而专注于产品和逻辑,iOS提供了一种有效的方法, 即自动引用计数A ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- 《Cortex-M0权威指南》之体系结构---嵌套中断控制器(NVIC)
转载请注明来源:cuixiaolei的技术博客 为了管理中断请求的优先级并处理其他异常,Cortex-M0处理器内置了嵌套中断控制器(NVIC).NVIC的一些可编程控制器控制着中断管理功能,这些寄存 ...