C#_.NetFramework_Web项目_EXCEL数据导出
【推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出】
项目需引用NPOI的NuGet包:
A-2:EXCEL数据导出--Web项目--C#代码导出:
/// <summary>
/// EXCEL帮助类
/// </summary>
/// <typeparam name="T">泛型类</typeparam>
/// <typeparam name="TCollection">泛型类集合</typeparam>
public class ExcelHelp<T, TCollection> where T : new() where TCollection : List<T>, new()
{
//http请求Request对象
public static HttpRequest baseRequest = HttpContext.Current.Request;
//http请求Response对象
public static HttpResponse baseResponse = HttpContext.Current.Response;/// <summary>
/// 将数据导出EXCEL
/// </summary>
/// <param name="columnNameAndShowNameDic">列名+显示名</param>
/// <param name="tColl">数据集(tColl里的类属性名必须和字典中的列名一致)</param>
public static void ExportExcelData(Dictionary<string, string> columnNameAndShowNameDic, TCollection tColl)
{
WorkBook workbook = WorkBook.CreateNew();
WorkSheet worksheet = workbook.Sheets["sheet1"]; List<string> columnNameList = columnNameAndShowNameDic.Keys.ToList();
List<string> showNameList = columnNameAndShowNameDic.Values.ToList();
//暂定26行
string[] zm = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
//设置首列显示
for (var i = 0; i < columnNameList.Count; i++)
{
worksheet.Cells[zm[i] + "1"].Value = showNameList[i];
//加粗
worksheet.Cells[zm[i] + "1"].Style.Font.Bold = true;
}
for (int i = 0; i < tColl.Count; i++)
{
for (int j = 0; j < columnNameList.Count; j++)
{
worksheet.Cells[zm[j] + (i + 2)].Value = getPropertyValue(tColl[i], columnNameList[j]);
}
}
byte[] buffer = workbook.SaveAsBytes();
baseResponse.Clear();
baseResponse.Buffer = true;
baseResponse.ContentEncoding = System.Text.Encoding.UTF8;
//baseResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
baseResponse.ContentType = "application/vnd.ms-excel";
//设置导出文件名
baseResponse.AddHeader("content-disposition", "attachment; filename=" + "MaintainReport" + ".xlsx");
baseResponse.AddHeader("Content-Length", buffer.Length.ToString()); baseResponse.BinaryWrite(buffer);
baseResponse.Flush();
baseResponse.End();
}
/// <summary>
/// 获取属性值
/// </summary>
/// <param name="t">T对象实例</param>
/// <param name="propertyName">属性名</param>
/// <returns></returns>
public static string getPropertyValue(T t, string propertyName)
{
PropertyInfo info = t.GetType().GetProperty(propertyName);
//获取属性值转换暂设置如下字段,可根据实际情况添加
if (info.PropertyType == typeof(DateTime))
{
return Convert.ToDateTime(info.GetValue(t)).ToString("yyyy-MM-dd HH:mm");
}
return info.GetValue(t).ToString();
}
}
C#_.NetFramework_Web项目_EXCEL数据导出的更多相关文章
- C#_.NetFramework_Web项目_EXCEL数据导入
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 需要引用NPOI的Nuget包:NPOI-v2.4.1 B-1:EXCEL数据导入--C#获 ...
- C#_.NetFramework_WebAPI项目_EXCEL数据导出
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 项目需要引用NPOI的Nuget包: A-2--EXCEL数据导出--WebAPI项目--N ...
- C#_.NetCore_Web项目_EXCEL数据导出(ExcelHelper_第一版)
项目需要引用NPOI的Nuget包:DotNetCore.NPOI-v1.2.2 A-前端触发下载Excel的方法有三种: 1-JS-Url跳转请求-后台需要返回文件流数据: window.Locat ...
- C#_.NetCore_WebAPI项目_EXCEL数据导出(ExcelHelper_第二版_优化逻辑)
项目需要引用NPOI的Nuget包:DotNetCore.NPOI-v1.2.2 本篇文章是对WebAPI项目使用NPOI操作Excel时的帮助类:ExcelHelper的改进优化做下记录: 备注:下 ...
- C#_.NetFramework_Web项目_NPOI_EXCEL数据导入
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 项目需要引用NPOI的Nuget包: B-2--EXCEL数据导入--NPOI--C#获取数 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- DB数据导出工具分享
一个根据数据库链接字符串,sql语句 即可将结果集导出到Excel的工具 分享,支持sqlserver,mysql. 前因 一个月前朋友找到我,让我帮忙做一个根据sql导出查询结果到Excel的工具( ...
- .Net之Nopi Excel数据导出和批量导入功能
一.介绍NPOI和编写demo的原因 1.Npoi是什么: 它是一个专门用于读写Microsoft Office二进制和OOXML文件格式的.NET库,我们使用它能够轻松的实现对应数据的导入,导出功能 ...
- asp.net 将repeater上数据导出到excel
1,首先得到一个DataTable public DataTable GetTable(string sql) { SqlConnnection con=new SqlConnection(Confi ...
随机推荐
- SpringBoot初探JSP页面可能遇到的坑
第一个坑就是依赖没有配了 网上很多依赖的配置代码 在pom.xml文件的dependencies添加以下依赖 <!-- servlet依赖 --> <dependency> & ...
- FlowPortal:流程节点定义有误,合流节点"合流"没有对应的聚焦节点
FB版本:6.00c 报错: 流程节点定义有误,合流节点"合流"没有对应的聚焦节点 解决办法:分流和合流之间的节点不能有其他节点汇入.调整如下后,成功保存.
- flutter_boot android和flutter源码阅读记录
版本号0.1.54 看源码之前,我先去看下官方文档,对于其源码的设计说明,文中所说的原生都是指android 看完官方文档的说明,我有以下几个疑问 第一个:容器是怎么设计的? 第二个:native和f ...
- 初识PMP PMBOK初解(指南第一章引论)
引论 1.1指南概述和目的 普遍认可:大多数时候是适用于大多数项目,价值和有效性已获得一致认可. 良好实践:知识.技能.工具和技术能够达到预期的商业价值和成果,提高很多项目成功的可能性. 确定过程.输 ...
- oracle性能优化(项目中的一个sql优化的简单记录)
在项目中,写的sql主要以查询为主,但是数据量一大,就会突出sql性能优化的重要性.其实在数据量2000W以内,可以考虑索引,但超过2000W了,就要考虑分库分表这些了.本文主要记录在实际项目中,一个 ...
- UWP 记一次x64平台无法单步调试的bug
是这样的,平时开发uwp程序,都是用x86架构进行部署和调试.但是有时候需要在XBOX上进行调试,所以架构需要改成x64进行操作. 但是最近x64位下不能进行调试了. 搜遍网上的各种教程,也是各有各的 ...
- 死磕 java线程系列之线程池深入解析——构造方法
(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本. 简介 ThreadPoolExecutor的构造方法是创建线程池的入口,虽然比较简单,但是信息量很大,由此也能 ...
- nltk的安装和简单使用
使用python进行自然语言处理,有一些第三方库供大家使用: ·NLTK(Python自然语言工具包)用于诸如标记化.词形还原.词干化.解析.POS标注等任务.该库具有几乎所有NLP任务的工具. ·S ...
- Java并发J.U.C学习总结
转载自http://www.cnblogs.com/chenpi/结合自己理解稍有添加自己的理解 阅读目录 JSR 166及J.U.C Executor框架(线程池. Callable .Future ...
- 百度地图API 拖拽或点击地图位置获取坐标
function setPlace(map,myValue,callback){ function getAddress(){ var pp = local.getResults().getPoi(0 ...