架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1822|回复: 24

[WebAPI] webapi将list数据导出成Excel表格文件

[复制链接]
发表于 2018-7-16 22:26:35 | 显示全部楼层 |阅读模式
使用c#导出excel表格,需要用到npoi,介绍如下:

NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。

网上很多的代码,都需要把数据存到服务器,搞成物理文件,再导出(或者给一个下载链接),本帖子代码,不需要存物理文件,直接可以把list数据导出下载

先看效果图:

QQ截图20180716221830.jpg
我们用浏览器,访问:http://localhost:63096/api/download/test 接口地址,即可下载excel文件。

下载完成后,我们打开test.xls,可以正常打开和读取!如下图:

QQ截图20180716221850.jpg

准备list数据,代码:

  1. public class UserInfo
  2.     {
  3.         public static List<UserInfo> GetList()
  4.         {
  5.             List<UserInfo> list = new List<UserInfo>();
  6.             list.Add(new UserInfo("张山", "男", 18, "羽毛球"));
  7.             list.Add(new UserInfo("李四", "男", 23, "篮球"));
  8.             list.Add(new UserInfo("小渣渣", "男", 23, "编程"));
  9.             list.Add(new UserInfo("小芳", "女", 25, "足球"));
  10.             list.Add(new UserInfo("小花", "女", 11, "可乐"));
  11.             list.Add(new UserInfo("架构师", "男", 4, "http://www.itsvse.com"));
  12.             return list;
  13.         }

  14.         public UserInfo(string n,string s,int a,string  l)
  15.         {
  16.             this.Name = n;
  17.             this.Sex = s;
  18.             this.Age = a;
  19.             this.Like = l;
  20.         }
  21.         public string Name { get; set; }

  22.         public string Sex { get; set; }


  23.         public int Age { get; set; }

  24.         public string Like { get; set; }
  25.     }
复制代码


webapi代码如下:

  1. [HttpGet]
  2.         public IHttpActionResult Test()
  3.         {

  4.             var browser = String.Empty;
  5.             if (HttpContext.Current.Request.UserAgent != null)
  6.             {
  7.                 browser = HttpContext.Current.Request.UserAgent.ToUpper();
  8.             }
  9.             HttpResponseMessage httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);
  10.             #region 内容
  11.             // Excel列的名称
  12.             Dictionary<string, string> cellheader = new Dictionary<string, string> {
  13.                 { "Name", "姓名" },
  14.                 { "Sex", "性别" },
  15.                 { "Age", "年龄" },
  16.                 { "Like", "爱好" },
  17.             };
  18.             var info = EntityListToExcel2003(cellheader, UserInfo.GetList(), "用户信息");
  19.             #endregion
  20.             Stream stream = new MemoryStream(info);
  21.             httpResponseMessage.Content = new StreamContent(stream);
  22.             httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
  23.             httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
  24.             {
  25.                 FileName =
  26.                     browser.Contains("FIREFOX")
  27.                         ? Path.GetFileName("test.xlsx")
  28.                         : HttpUtility.UrlEncode(Path.GetFileName("test.xls"))
  29.             };
  30.             return ResponseMessage(httpResponseMessage);
  31.         }
复制代码


EntityListToExcel2003方法如下:

游客,如果您要查看本帖隐藏内容请回复




上一篇:Asp.net mvc bundle将所有css文件打包在一起
下一篇:vs2017 浏览器输入路径就终止调试
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-8-22 15:56:01 | 显示全部楼层
EntityListToExcel2003 方法内容呢
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-9-6 09:30:18 | 显示全部楼层
赞一个·标记一下·以后用得着!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-11-20 15:17:36 | 显示全部楼层
如何通过html标签输出excel呢
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-7-20 08:09:57 | 显示全部楼层
山山水水

评分

参与人数 1MB -1 贡献 -1 收起 理由
QWERTYU -1 -1 请勿灌水,提高回帖质量是每位会员应尽的义.

查看全部评分

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

发表于 2018-7-25 09:23:54 | 显示全部楼层
可以看看,比较好
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-7-25 09:27:42 | 显示全部楼层
挺不错的
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

发表于 2018-9-5 16:24:07 | 显示全部楼层
水水水水水水水水水水水

评分

参与人数 1MB -1 贡献 -1 收起 理由
QWERTYU -1 -1 请勿灌水,提高回帖质量是每位会员应尽的义.

查看全部评分

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-9-19 15:05:17 | 显示全部楼层
很有用,谢谢
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-9-27 08:56:58 | 显示全部楼层
支持楼主更新~
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-9-27 09:14:28 | 显示全部楼层
了解一下
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2018-12-18 18:32

Powered by Discuz! X3.4

© 2001-2014 Comsenz Inc.

快速回复 返回顶部 返回列表