C#_.NetFramework_WebAPI项目_EXCEL数据导出
【推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出】
项目需要引用NPOI的Nuget包:
A-2--EXCEL数据导出--WebAPI项目--NPOI--接口导出:
说明:以下方法借助第三方插件:NPOI专门处理EXCEL等办公文档的类库,因此项目中需引用该插件,NuGet--所有NPOI即可安装。
/// <summary>
/// 班车数据导出成EXCEL
/// </summary>
/// <param name="conferenceID"></param>
/// <returns></returns>
[HttpGet]
public HttpResponseMessage ExportExcelDataForBusRoute(string conferenceID)
{
HttpResponseMessage result = new HttpResponseMessage();
ControllerHelp.RunAction(() =>
{
BusRouteModelCollection busColl = BusRouteModelAdapter.Instance.Load(m => m.AppendItem("ConferenceID", conferenceID));
//如果想要某个单元格内容显示多列,在内容中加入: "\n" 换行字符
Dictionary<string, string> dicColl = new Dictionary<string, string>() {
{"路线标题","Title" },
{"发车时间","DepartDate" },
{"出发地","BeginPlace" },
{"对接人","ContactsName" },
{"对接人电话","ContactsPhone" }
};
result = ExcelHelp<BusRouteModel, BusRouteModelCollection>.ExportExcelData(dicColl, busColl, "BusRoute");
});
return result;
}
/// <summary>
/// 得到excel文件流
/// </summary>
/// <returns></returns>
private MemoryStream ExcelStream(Dictionary<string, string> displayAndColumnName, TCollection tlist)
{
//var list = dc.v_bs_dj_bbcdd1.Where(eps).ToList();
HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet1 = workbook.CreateSheet("Sheet1"); //1-创建首行
IRow headRow = sheet1.CreateRow(0);
//1.1-设置首行样式
IFont font = workbook.CreateFont();
font.Boldweight = (short)FontBoldWeight.Bold; //字体加粗
ICellStyle headCellStyle = workbook.CreateCellStyle();
headCellStyle.SetFont(font);
headCellStyle.Alignment = HorizontalAlignment.Center; //字体居中 List<string> displayNameList = displayAndColumnName.Keys.ToList();
//1.2-设置首行标题
for (var i = 0; i < displayAndColumnName.Keys.Count; i++)
{
ICell cell = headRow.CreateCell(i);
cell.SetCellValue(displayNameList[i].ToString());
cell.CellStyle = headCellStyle;
}
//2-设置内容列
List<string> columnNameList = displayAndColumnName.Values.ToList();
//2.1-内容行样式
ICellStyle contentCellStyle = workbook.CreateCellStyle();
contentCellStyle.Alignment = HorizontalAlignment.Center; //字体居中
contentCellStyle.WrapText = true; //自动换行
for (var i = 0; i < tlist.Count; i++)
{
IRow row = sheet1.CreateRow(i + 1);
//设置内容
for (var j = 0; j < columnNameList.Count; j++)
{
ICell cell = row.CreateCell(j);
cell.SetCellValue(getPropertyValue(tlist[i], columnNameList[j]));
cell.CellStyle = contentCellStyle;
}
}
//3-自动列宽-根据内容长度自动展开
for (int i = 0; i < displayNameList.Count; i++)
{
sheet1.AutoSizeColumn(i);
} MemoryStream file = new MemoryStream();
workbook.Write(file);
//这句代码非常重要,如果不加,会报:打开的EXCEL格式与扩展名指定的格式不一致
file.Seek(0, SeekOrigin.Begin); return file;
}
/// <summary>
/// 导出excel功能控制器
/// </summary>
/// <returns></returns>
public HttpResponseMessage ExportExcelDataForWebAPI(Dictionary<string, string> displayAndColumnName, TCollection tlist,string exportFileName)
{
var file = ExcelStream(displayAndColumnName, tlist);
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(file);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
result.Content.Headers.ContentDisposition.FileName = exportFileName+".xls";
return result;
}
C#_.NetFramework_WebAPI项目_EXCEL数据导出的更多相关文章
- C#_.NetFramework_Web项目_EXCEL数据导出
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 项目需引用NPOI的NuGet包: A-2:EXCEL数据导出--Web项目--C#代码导出 ...
- 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项目_EXCEL数据导入
[推荐阅读我的最新的Core版文章,是最全的介绍:C#_.NetCore_Web项目_EXCEL数据导出] 需要引用NPOI的Nuget包:NPOI-v2.4.1 B-1:EXCEL数据导入--C#获 ...
- 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 ...
随机推荐
- poj 1062 昂贵的聘礼 (有限制的最短路)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56594 Accepted: 17083 Descripti ...
- Caffe源码-Layer类
Layer类简介 Layer是caffe中搭建网络的基本单元,caffe代码中包含大量Layer基类派生出来的各种各样的层,各自通过虚函数 Forward() 和 Backward() 实现自己的功能 ...
- Python 分支、循环、条件与枚举
单行注释:# 注释内容多行注释:''' 注释内容 ''' Python 中有三种控制流语句: if for while 注:Python 中没有 Switch 这种开关语句 if 语句检测条件真, ...
- 函数式响应式编程 - Functional Reactive Programming
我们略过概念,直接看函数式响应式编程解决了什么问题. 从下面这个例子展开: 两个密码输入框,一个提交按钮. 密码.确认密码都填写并一致,允许提交:不一致提示错误. HTML 如下: <input ...
- 重新精读《Java 编程思想》系列之类的访问权限
Java 中,我们用访问权限修饰词确定库中的哪些类对于使用者是可以使用的. 访问权限修饰词有 public,protected,private 和什么都不写. 那么对于类来说,我们只可以用 publi ...
- Android 项目优化(七):阿里巴巴Android开发手册整理总结
本来之前觉得Android项目优化系列的文章基本整理完毕了,但是近期看了一下<阿里Android开发手册>有了很多收获,想再整理一篇,下面就开始吧. 先在这里列一下之前整理的文章及链接: ...
- 65-如何部署 Calico 网络?
Calico 是一个纯三层的虚拟网络方案,Calico 为每个容器分配一个 IP,每个 host 都是 router,把不同 host 的容器连接起来.与 VxLAN 不同的是,Calico 不对数据 ...
- Linux Ipsec
准备环境 1 主机ip:192.168.0.107 2 VPN服务器: ens32:192.168.0.102 ens33:127.16.1.10 环境测试 modprobe ppp-compress ...
- CSDN屏蔽广告
CSDN俨然是一家广告网站了,各种广告层出不穷,且毫无底线.经常性的展示一些植发.防脱的广告,实在影响心情.另外,在复制内容的时候,会通过js给你带上一段来源,对于版权保护这是好事儿,但是对于直接复制 ...
- React: 通过React.Children访问特定子组件
一.简介 React中提供了很多常用的API,其中有一个React.Children可以用来访问特定组件的子元素.它允许用来统计个数.map映射.循环遍历.转换数组以及显示指定子元素,如下所示: va ...