架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 102837|回复: 67

[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数据,代码:



webapi代码如下:



EntityListToExcel2003方法如下:





上一篇:Asp.net mvc bundle将所有css文件打包在一起
下一篇:vs2017 浏览器输入路径就终止调试
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-1-7 11:22:53 | 显示全部楼层
非常好,我用这个泛型的
/// <summary>
        /// 将一组对象导出成EXCEL
        /// </summary>
        /// <typeparam name="T">要导出对象的类型</typeparam>
        /// <param name="objList">一组对象</param>
        /// <param name="FileName">导出后的文件名</param>
        /// <param name="columnInfo">列名信息</param>
        public void ListToExcel<T>(List<T> objList, string FileName, Dictionary<string, string> columnInfo)
        {
            if (columnInfo.Count == 0) { return; }
            if (objList.Count == 0) { return; }
            //生成EXCEL的HTML
            string excelStr = "";
            Type myType = objList[0].GetType();
            //根据反射从传递进来的属性名信息得到要显示的属性
            List<System.Reflection.PropertyInfo> myPro = new List<System.Reflection.PropertyInfo>();
            foreach (string cName in columnInfo.Keys)
            {
                System.Reflection.PropertyInfo p = myType.GetProperty(cName);
                if (p != null)
                {
                    myPro.Add(p);
                    excelStr += columnInfo[cName] + "\t";
                }
            }
            //如果没有找到可用的属性则结束
            if (myPro.Count == 0) { return; }
            excelStr += "\n";
            foreach (T obj in objList)
            {
                foreach (System.Reflection.PropertyInfo p in myPro)
                {
                    excelStr += p.GetValue(obj, null) + "\t";
                }
                excelStr += "\n";
            }
            //输出EXCEL
            HttpResponse rs = System.Web.HttpContext.Current.Response;
            rs.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            rs.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
            rs.ContentType = "application/ms-excel";
            rs.Write(excelStr);
            rs.End();
        }
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2019-7-31 13:22:31 | 显示全部楼层

不客气
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-6-18 14:39:34 | 显示全部楼层
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 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-8-22 15:56:01 | 显示全部楼层
EntityListToExcel2003 方法内容呢
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-9-5 16:24:07 | 显示全部楼层
水水水水水水水水水水水

评分

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

查看全部评分

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2018-9-6 09:30:18 | 显示全部楼层
赞一个·标记一下·以后用得着!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 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|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-18 16:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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