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 2823 Sliding Windows (单调队列+输入输出挂)
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 73426 Accepted: 20849 ...
- CSS | 圣杯布局、双飞翼布局 | 自适应三栏布局
圣杯布局和双飞翼布局是前端工程师需要日常掌握的重要布局方式.两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局 虽然两者的实现方法略有差异,不过都遵循了以下要点: 1.两侧宽度固定 ...
- SpringBoot2基础,进阶,数据库,中间件等系列文章目录分类
本文源码:GitHub·点这里 || GitEE·点这里 一.文章分类 1.入门基础 SpringBoot2:环境搭建和RestFul风格接口 2.日志管理 SpringBoot2:配置Log4j2, ...
- [20191218]降序索引疑问4.txt
[20191218]降序索引疑问4.txt --//前几天优化一个项目,我发现许多表里面有有隐含字段,一般开发很少建立函数索引.我自己检查发现里面存在大量的降序索引.--//我感觉有点奇怪,为什么开发 ...
- 自定义Metadata验证属性
一.定义 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- ZKWeb网页框架2.2.1正式发布
2.2.1 更新的内容有 改进 EFCore 支持 支持自动 json 序列化字段 (通过 WithSerialization 选项) 支持懒加载 更新后 EFCore 可以使用所有默认插件 (ZKW ...
- 用Python在25行以下代码实现人脸识别
在本文中,我们将看到一种使用Python和开放源码库开始人脸识别的非常简单的方法. OpenCV OpenCV是最流行的计算机视觉库.最初是用C/C++编写的,现在它提供了Python的API. Op ...
- WPF使用FlowDocument实现图文混排
代码: <RichTextBox CaretBrush="#fff" Background="Transparent" BorderThickness=& ...
- NET Core 3.0 项目中使用 AutoFac
.net core 3.1 今天已正式发布,3.1跟3.0差别不是很大,主要是对 3.0一小部分修复和完善,最重要的是.NET Core 3.1是长期支持(LTS)版本,建议大家升级. .net co ...
- tornado框架中redis使用
一.安装依赖 pip3 install tornado-redis 二.导入模块 import tornadoredis 三.创建redis对象 import tornadoredis CONNECT ...